使用Vector C ++进行分段错误

时间:2015-06-11 17:17:00

标签: c++ vector push-back

我试图将存储在矢量中的所有值分成两个不同的矢量。但是当我打印任何向量的值时,它会抛出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

1 个答案:

答案 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;