首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

请问一个关于C++中向量的一个难以理解的有关问题

2012-04-14 
请教一个关于C++中向量的一个难以理解的问题void main(){vectorint afor(int i0i3i++)a.push_back

请教一个关于C++中向量的一个难以理解的问题
void main()
{
vector<int > a;
for(int i=0;i<3;i++)
a.push_back(i);
a.insert(a.begin(),a.back());
for(vector<int >::iterator it1=a.begin();it1!=a.end();it1++)
cout<<*it1<<" ";
cout<<"\n"<<endl;
a.insert(a.begin(),a.back());
for(vector<int >::iterator it2=a.begin();it2!=a.end();it2++)
cout<<*it2<<" ";
cout<<"\n"<<endl;
a.insert(a.begin(),a.back());
for(vector<int >::iterator it3=a.begin();it3!=a.end();it3++)
cout<<*it3<<" ";
}

这段代码的运行结果为什么会是
1 0 1 2
2 1 0 1 2
1 2 1 0 1 2

好难理解啊啊。。。
请教各位大神帮帮忙。。
小弟在这谢了。。。。。。。

[解决办法]

探讨
9楼


[解决办法]
探讨

引用:


[解决办法]
是不是变成你说的那个值不知道

楼主用法本身就有问题, 先重新分配大小,然后拷贝原来的值,拷贝完之后,释放旧空间。。。

造成 back()的值无意义, 然后此时再把 这个无意义的值insert到新空间里。。。。





探讨

引用:

引用:



vector容量满了的话,会释放原来的空间申请更大的空间,然后把原来空间的值复制到新的空间,但这时候插入的是原来空间的元素。

LZ的输出结果是因为释放空间后,原来空间的值没变。而你的输出结果,是因为释放空间后,原来空间的值全变成FFFFFFFFDDDDDDDD,和我的输出结果一样。

热点排行