Boost logo

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