From: Daniel T. on 21 May 2010 07:03 jamaj <jamajbr(a)gmail.com> wrote: > I'm learning STL vectors. So, excuse me for the dummy question. > > Suppose that, in some function, I create a > > foo() > { > vector<string> SS; > } > > Is this vector deallocated at the end of the foo() function? Yes. > If I want to pass it to some other function that will store it > somewhere, do I need to use a vector * an allocate it someway and pass > the pointer to the vector, instead the vector itself? Does it make any > sense? If so, how do I do it? It depends on how that function will be storing it. Some examples: vector<string> storage; void fn(const vector<string>& in) { storage = in; } int main() { vector<string> ss; fn(ss); } With the above, 'storage' and 'ss' end up with the same contents but they are copies of each other. This is usually how it's done, especially if "storage" is actually a member-variable of some class. (A copy is made to support encapsulation.) If you don't want to copy, then you need to use a pointer: vector<string>* storage; void fn(vector<string>* in) { storage = in; } int main() { vector<string>* v = new vector<string>; fn(v); delete v; // you have to manually delete the vector. } Of course there are several different smart pointers that you can use to make sure the deletion is done properly and automatically for you. -- [ See http://www.gotw.ca/resources/clcm.htm for info about ] [ comp.lang.c++.moderated. First time posters: Do this! ]
First
|
Prev
|
Pages: 1 2 Prev: complex number issues Next: Is it dangerous to pass a temp variable to throw |