【发布时间】:2013-12-12 13:56:06
【问题描述】:
请解释为什么以下代码按预期工作(元素添加在第 2 位):
std::vector<int> v(5);
for(int i = 0; i < 5; i++)
v[i] = i;
std::vector<int>::iterator it = v.begin()+1;
it = v.insert(it, 33);
cout << v[0] << " " << v[1] << " " << v[2] << " " << v[3] << " " << v[4] << endl;
//outs: 0 33 1 2 3
以下没有(元素被添加到第一个位置):
std::vector<int> v;
v.reserve(5);
for(int i = 0; i < 5; i++)
v[i] = i;
std::vector<int>::iterator it = v.begin()+1;
it = v.insert(it, 33);
cout << v[0] << " " << v[1] << " " << v[2] << " " << v[3] << " " << v[4] << endl;
//outs: 33 1 2 3 4
【问题讨论】:
-
你的意思是
resize()而不是reserve()?