C++ 从向量中删除元素并更改大小

C++ 从向量中删除元素并更改大小,c++,vector,C++,Vector,我尝试从向量中删除元素,它与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

我尝试从向量中删除元素,它与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
std::vector myvector;
myvector.push_back(1);
myvector.push_back(2);
myvector.push_back(3)//这里的尺码是3号
myvector.erase(myvector.begin()+1)//我认为通常情况下,移除元件后的尺寸应为2

是否有一个函数可以做,或者我应该手动地做,我是C++的新手,我检查了文档,但没有找到解决方案。

大小改变了,然后使用成员函数擦除删除向量的元素。如果您指的是容量,则不会更改

这是一个演示程序

#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;
}

您是否确实检查了在调用erase()后返回的
size()
值?我在调用erase()后检查了该值,但它仍然与您的标准库中的值相同。它已损坏。@MohamedBouallegue:这不可能。它对我有用:。你能展示更多你的代码吗?也许你无意中复制了一份?请阅读以下内容:
v.size() = 3
1 2 3 
v.size() = 2
1 3