我一直在學習C++,但現在我遇到了一個令我困惑的問題。問題是,當我嘗試擦除矢量中的元素時,擦除功能不會擦除我想擦除的元素,而是擦除矢量中的最後一個元素。我重建問題與這一段代碼,使其更容易理解我的問題比起來,我的整個代碼:vector :: erase不會擦除所需的元素,而是會擦除矢量中的最後一個元素
#include <vector>
#include <iostream>
int main()
{
std::vector<int> c;
for(int i=0; i<=10; i++){
c.push_back(i);
}
for (int i=0;i<c.size();i++) {
std::cout << i << " ";
}
std::cout << '\n';
c.erase(c.begin()+2);
for (int i=0;i<c.size();i++) {
std::cout << i << " ";
}
std::cout << '\n';
c.erase(c.begin()+2, c.begin()+5);
for (int i=0;i<c.size();i++) {
std::cout << i << " ";
}
std::cout << '\n';
}
結果不是預期的:
0 1 2 3 4 5 6 7 8 9 10
0 1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6
時我認爲結果會是
0 1 2 3 4 5 6 7 8 9 10
0 1 3 4 5 6 7 8 9 10
0 1 2 7 8 9 10
我在做一些完全錯誤的事情嗎?或者爲什麼這樣做不像我想的那樣工作? 如果它是相關的,我使用MinGW編譯器的Windows。
是的,當然。感謝您的快速回復! – Tuotau 2014-10-19 20:52:21
嗯,我沒有在我的實際代碼中犯同樣的錯誤。我應該編輯問題來包含有問題的部分形式,我的實際代碼,或再次詢問?對不起,使這個複雜.. – Tuotau 2014-10-19 20:54:59
關於你的問題,我只知道[這個彙編](http://meta.codereview.stackexchange.com/questions/1763/for-an-iterative-review-is-it-okay-編輯我自己的問題包括修訂c/1765#1765)這聽起來合理的我。之後,你應該問一個新的問題。 – davidhigh 2014-10-19 20:57:29