|
Boost Users : |
From: Sohail Somani (s.somani_at_[hidden])
Date: 2006-03-20 14:46:34
> -----Original Message-----
> From: boost-users-bounces_at_[hidden]
> [mailto:boost-users-bounces_at_[hidden]] On Behalf Of
> kdsfinger_at_[hidden]
> Sent: Monday, March 20, 2006 9:59 AM
> To: Boost-users_at_[hidden]
> Subject: [Boost-users] how to use shared_ptr to wrap
> std::vector and returnfrom function?
>
> hi, Boost users
>
> Suppose I created a large data in a function and want to
> return it back to where the function was called. I want to
> return the pointer so that the deep copy of the large data is
> not needed and memory leak is nicely handled. Can someone let
> me know how to do it?
This is what auto_ptr is for, shared_ptr is overkill as far as I can
tell:
#include <iostream>
#include <memory>
#include <vector>
typedef std::auto_ptr<std::vector<double> > avd;
avd getV()
{
avd a(new std::vector<double>);
a->reserve(2);
a->push_back(1.0);
a->push_back(2.0);
return a;
}
int main()
{
const avd a = getV();
std::vector<double> & ref = *a;
std::cout << ref[0] << " " << ref[1] << std::endl;
ref[0]=5;
std::cout << ref[0] << " " << ref[1] << std::endl;
}
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net