我试图将存储在矢量中的所有值分成两个不同的矢量。但是当我打印任何向量的值时,它会抛出seg错误。
以下是代码示例。
std::vector<int> V,Vx,Vy;
for (int i = 0; i < k; ++i)
{
cin>>x;
V.push_back(x);
}
for(int i=0;i<m-1;i=i+2)
{
Vx.push_back(V[i]);
}
for(int i=1;i<m-1;i=i+2)
{
Vy.push_back(V[i]);
}
for(int i=0;i<m-1;i=i+2)
cout<<Vx[i]<<endl;
我在哪里做错了? k = 12,m = 6
答案 0 :(得分:1)
的问题
for(int i=0;i<m-1;i=i+2)
cout<<Vx[i]<<endl;
是您使用越界索引访问Vx
的元素。
采用编程实践可以减少代码错误。
如果您能够使用C ++ 11编译器,请使用range for循环来访问容器元素。
for ( auto i : Vx )
cout << i << endl;
如果您只能使用C ++ 03编译器,请使用迭代器。
for ( std::vector<int>::iterator iter = Vx.begin(), iter != Vx.end(); ++iter )
cout << *iter << endl;