2014-12-01 41 views
-1

我嘗試從矢量中刪除元素,並且它在erase()方法下正常工作,但刪除元素後,矢量的大小仍然相同。從向量中刪除元素並更改大小

std::vector<int> myvector; 
myvector.push_back (1); 
myvector.push_back (2); 
myvector.push_back (3);//here the size is 3 
myvector.erase(myvector.begin()+1);//I think normally the size should be 2 after removing the element 

是有可以做,或者我應該做手工的功能,我是新來的C++我檢查的文件,我沒有找到一個解決方案。

+3

你真的檢查什麼'尺寸()'你擦除電話後的回報? – inf 2014-12-01 20:13:44

+0

我在調用erase()後檢查了大小,它仍然是一樣的 – 2014-12-01 20:15:11

+0

然後你的標準庫被破壞了。 – juanchopanza 2014-12-01 20:17:57

回答

5

大小被改變,然後使用成員函數擦除刪除矢量的元素。如果你的意思是容量那麼它不會被改變。

這裏是一個示範項目

#include <iostream> 
#include <vector> 

int main() 
{ 
    std::vector<int> v { 1, 2, 3 }; 

    std::cout << "v.size() = " << v.size() << std::endl; 
    for (int x : v) std::cout << x << ' '; 
    std::cout << std::endl; 

    v.erase(v.begin() + 1); 

    std::cout << "v.size() = " << v.size() << std::endl; 
    for (int x : v) std::cout << x << ' '; 
    std::cout << std::endl; 

    return 0; 
} 

輸出是

v.size() = 3 
1 2 3 
v.size() = 2 
1 3