[英]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.