簡體   English   中英

使用 Vector C++ 的分段錯誤

[英]Segmentation fault using Vector C++

我試圖將存儲在向量中的所有值分成兩個不同的向量。 但是當我打印任何向量的值時,它會拋出段錯誤。

下面是代碼示例。

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

問題在於

    for(int i=0;i<m-1;i=i+2)
        cout<<Vx[i]<<endl;

是您正在使用越界索引訪問Vx元素。

采用導致錯誤代碼更少的編程實踐是很好的。

如果您能夠使用 C++11 編譯器,請使用范圍 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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM