vector 崩溃问题
运行下面代码的时候崩溃了...求问为什么...编译器提示在下面黄色的部分出问题了
程序的目的是,把一个310的向量扩充5倍,然后在扩充后的向量里,每12个取一个..
[code=C/C++][/code]
#include <iostream>
#include <vector>
using namespace std;
const int uInt310 = 310;
const int uInt12 = 12;
const int uInt5 = 5;
typedef vector<int>::iterator VecIntItor;
int main()
{
vector<int> vecInt;
vector<int> vecSource;
vector<int> vecDest;
for(int i=0; i<uInt310; i++)
{
vecInt.push_back(i);
}
for(int i=0; i<uInt310; i++)
{
for(int i=0; i<uInt5; i++)
{
vecSource.push_back(vecInt[i]);
}
}
for(VecIntItor itor=vecSource.begin(); itor!=vecSource.end(); itor+=uInt12 )
{
vecDest.push_back(*itor);
}
return 0;
}
[解决办法]
无非是越界嘛
[解决办法]
310*5不是12的倍数因此这样写大概是不行的
改成<大概也不行,迭代器不保证后边的一定比前边的小
[解决办法]
- C/C++ code
for(vector<int>::size_type index = 0, size = vecSource.size(); index < size; index+=uInt12) { vecDest.push_back(vecSource[index]); }
[解决办法]
迭代器越界,可以这样改:
for (VecIntItor itor=vecSource.begin(); itor<vecSource.end()-uInt12; itor+=uInt12)
{
//...
}
注:对关联式迭代器不适用(它们不支持operator<)。