I know that weak_ptr is a good way to avoid cyclic references.
However I'm not sure whether I should use it to improve performance when possible, for example when just reading the content in the pointer.
E.g. I have a vector storing smart pointers:
typedef shared_ptr<MyClass> MyClassPtr; vector<MyClassPtr> v; v.push_back(..); ... And I have a function to search an item and print it out.
void foo(vector<MyClassPtr> &v) { // find and get an item at i MyClassPtr ptr = v[i]; // <-- Do I really need to increase reference count here? // I just want to print out the item's content. ptr->print(); } Is it better if using weak_ptr in this case? Is there any pitfalls I should be aware of?