я ожидал, что сНеожиданное поведение станд :: вектор :: = оператор в C++
v2 = v1
содержание v1 копируется в v2.
Что я испытываю, так это то, что содержимое v1 равно , а не, скопированное в v2, если содержимое v1 не было инициализировано в конструкторе.
Просто увидеть код:
#include <iostream>
#include <vector>
using namespace std;
int main (void) {
vector<int> v1; // if I use vector<int> v1(10,0); it just works fine
vector<int> v2;
v1.reserve(5);
v2.reserve(5);
for (int i = 0; i < 5; i++) v1[i] = i*i;
v2 = v1;
for (int i = 0; i < 5; i++) {
cout << "v1[" << i << "] = " << v1[i] << endl;
cout << "v2[" << i << "] = " << v2[i] << endl;
}
return 0;
}
Результат исполнения является:
v1[0] = 0
v2[0] = 0
v1[1] = 1
v2[1] = 0
v1[2] = 4
v2[2] = 0
v1[3] = 9
v2[3] = 0
v1[4] = 16
v2[4] = 0
Почему это странное поведение?