std::vector<std::string>次のコードが呼び出されたときに、どのように自己を初期化しますか
std::vector<std::string> original;
std::vector<std::string> newVector = original;
std::vector<std::string> newコピー コンストラクターがduringで呼び出されるように見えますnewVector = originalが、 はどのようにstd::string内に持ち込まれorginalますか? それらはコピーですか、それとも新品std::stringですか? メモリnewVector[0]も と同じoriginal[0]です。
私が尋ねる理由は、私が次のことをしていると言うことです
#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();
}
tDoStuff(最適化されていないビルドでは)の範囲外になりますが、の intへのポインターで満たされているだけの場合、デストラクタが呼び出され、使用されているメモリが削除される可能性があります。呼ばれた?std::stringglobalVectorstd::stringglobalVector[0]std::stringDoStuff
ナットシェル、私は基本的に尋ねています、std::vectorのコピーコンストラクターが呼び出されると、内部の要素はどのようにコピーされますか?