容器方面的问题
问题 1
int ia[7] = { 0, 1, 1, 2, 3, 5, 8 };
list<int> ilist( ia+4, ia+6);
for(list<int>::iterator i=ilist.begin();i!=ilist.end();++i)
cout<<*i<<" ";
cout<<endl;
上面的输出为什么是3 5而不是3 5 8??
问题2
vector<int> ivec(ia, ia+8);
for(vector<int>::size_type i=0;i!=ivec.size();i++)
cout<<ivec[i]<<" ";
为什么编译器没有报错,而是最后一个数输出了随机数?
求高手!
[解决办法]
1、STL的范围全部是半开闭区间。因此ilist的范围是[ia+4, ia+6)。
2、C/C++不检查越界。
[解决办法]
[解决办法]
因为list的构造函数只包涵左边的不包涵右边的C++ primer上有说
list<int> ilist( ia+4, ia+7);