How do I iterate over a vector that is wrapped in a smart pointer in Microsoft C++ 11?

Hi:

I have a Microsoft C++ 11 application.

I have a vector of shared_ptrs that get returned from a method call.
In order for that vector not to be leaked, I have wrapped it in a shared_ptr as well.

How do I iterate over that vector when it is wrapped in a smart (shared) pointer?

// Definition of the method
shared_ptr<vector<shared_ptr<Foo>>> GetVectorOfValues(){}

// Now in another method....
{
   ...
   shared_ptr<vector<shared_ptr<Foo>>> values =  GetVectorOfValues();

   for (auto value : values.get())
   {
   }
}

Open in new window


I would have thought that "get()" would get me to the wrapped vector.
How would I go about doing this?

Is there a better pattern to use to achieve my goals?

Thanks,
JohnB
LVL 1
jxbmaSoftware ConsultantAsked:
Who is Participating?
 
jkrConnect With a Mentor Commented:
Let me try to 'unwrap' that the old-school way for readability:

// Definition of the method
shared_ptr<vector<shared_ptr<Foo>>> GetVectorOfValues(){}

// Now in another method....
{
   ...
   shared_ptr<vector<shared_ptr<Foo>>> values =  GetVectorOfValues();

   vector<shared_ptr<Foo>>* vec = values.get())
    for (vector<shared_ptr<Foo>>::iterator i = vec->begin(); i != vec->end(); ++i)
   {
        Foo* foo = i->get();
   }
}
                                  

Open in new window


Is that what you had in mind?
0
 
jxbmaSoftware ConsultantAuthor Commented:
Thank-you old school!
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.