How std::vector<std::string>
initializes itself when the following code is called
std::vector<std::string> original; std::vector<std::string> newVector = original;
It would seem that if the copy constructor is called on std::vector<std::string> new
during newVector = original
, but how is std::string
transferred inside orginal
? Are they copies or new std::string
? Thus, the memory in newVector[0]
same as original[0]
.
I ask you to say that I do the following
#include <vector> #include <string> using namespace std; vector<string> globalVector; void Initialize() { globalVector.push_back("One"); globalVector.push_back("Two"); } void DoStuff() { vector<string> t = globalVector; } int main(void) { Initialize(); DoStuff(); }
t
will leave the DoStuff
(in a non-optimized assembly), but if it is just filled with pointers to std::string
in globalVector
, the destructor can be called and the memory used in std::string
is deleted to create globalVector[0]
, garbage-filled std::string
after calling DoStuff
?
The shell core, I basically ask when the std::vector
copy constructor is called, how are the elements inside copied?
source share