Advertisement
sanjay1909

Vector Method Push_back - call by value not reference

May 17th, 2014
226
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.89 KB | None | 0 0
  1. //push_back method - call by value not reference
  2.  
  3. /*
  4. * Code to explain the issue
  5. * Followed by modified version of same code , to meet my requirements
  6. */
  7. vector<vector<string> > outerVector;
  8. vector<string> innerVector;
  9. cout << "Inner Vector Address:  " << &innerVector<< endl;//Inner Vector Address:  0x28febc
  10. outerVector.push_back(innerVector);
  11.  
  12. string one = "one";
  13. string two ="two";
  14.  
  15. vector<string> lastElement = outerVector.back();
  16. cout << "OuterVector LastElement Address: " << &outerVector.back() << endl;//OuterVector LastElement Address: 0x3d2238
  17. lastElement.push_back(one);
  18. cout << "lastElement Size: " << lastElement.size()<< endl;//lastElement Size: 1
  19.  
  20. lastElement = outerVector.back();
  21. cout << "OuterVector LastElement Address: " << &outerVector.back() << endl;//OuterVector LastElement Address: 0x3d2238
  22. lastElement.push_back(two);
  23. cout << "lastElement Size: " << lastElement.size() << endl;//lastElement Size: 1
  24.  
  25.  
  26. /*
  27. * In the below code
  28. * I modified the above code to support reference for the inner elements
  29. */
  30. //Store the address in inner vector to access the original element
  31. vector<vector<string>*> outerVector;
  32. vector<string>* innerVector = new vector<string>;
  33. cout << "Inner Vector Address:  " << innerVector<< endl;//Inner Vector Address:  0x762238
  34. outerVector.push_back(innerVector);
  35.  
  36. string one = "one";
  37. string two ="two";
  38.  
  39. vector<string>* lastElement = outerVector.back();
  40. cout << "OuterVector LastElement Address: " << outerVector.back() << endl;//OuterVector LastElement Address: 0x762238
  41. lastElement->push_back(one);
  42. cout << "lastElement Size: " << lastElement->size()<< endl;//lastElement Size: 1
  43.  
  44. lastElement = outerVector.back();
  45. cout << "OuterVector LastElement Address: " << outerVector.back() << endl;//OuterVector LastElement Address: 0x762238
  46. lastElement->push_back(two);
  47. cout << "lastElement Size: " << lastElement->size() << endl;//lastElement Size: 2
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement