2014-12-01 2 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

+0

Я проверил размер после того, как я вызвал erase(), и он все тот же –

+0

Тогда ваша стандартная библиотека сломалась. – juanchopanza

ответ

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 
Смежные вопросы