On Wed, 2014-02-12, A wrote:
> There are 2 vectors each one having a structure
>
> struct MyStruct
> {
> int a;
> std::string b;
> }
>
> std::vector<MyStruct> v1;
> std::vector<MyStruct> v2;
>
> Now I want a pointer to which one I will use... v1 or v2
>
> std::vector<MyStruct> *v = (condition)? &v1 : &v2;
You don't need a pointer below -- a reference would have worked just
as well, and the syntax would have been cleaner.
> Finally I access it using:
>
> for (unsigned i = 0; i < v->size(); i++)
> {
> v->operator[](i).a = i + 1;
> }
>
> My lack of understanding here is:
>
> a) does the above *v needs to be deleted? Isn't it just a pointer variable?
No, and yes. You haven't done 'new', so you're not responsible for
doing 'delete'. BTW, both of those are rarely needed in modern code
-- if you use them a lot you're probably doing something wrong.
> Or it works differently when it points to a vector? Just to be clear, I
> don't actually need to delete v1 or v2. I just need to cleanup *v if
> required.
No cleanup required. But I don't really understand what you're trying
to say ...
> b) what's the heap or stack or difference or advantage of them in relation
> to the above?
I don't understand that question. Please rephrase.
/Jorgen
--
// Jorgen Grahn <grahn@ Oo o. . .
\X/
snipabacken.se> O o .