2. 以下反向遍历array数组的方法有什么错误?[STL易]
vector array;
array.push_back( 1 );
array.push_back( 2 );
array.push_back( 3 );
for( vector::size_type i=array.size()-1; i>=0; --i ) // 反向遍历array数组
{
cout << array[i] << endl;
}
答:首先数组定义有误,应加上类型参数:vector<int> array。其次vector::size_type被定义为unsigned int,即无符号数,这样做为循环变量的i为0时再减1就会变成最大的整数,导致循环失去控制。
编译通过的代码:
运行后可能会地址访问异常而停止。
本文探讨了使用C++ STL中的Vector容器进行反向遍历时可能遇到的问题,并给出了正确的实现方式。主要讨论了如何避免由于vector::size_type类型的特性导致的循环异常。
630

被折叠的 条评论
为什么被折叠?



