删除大小为 0 的结构向量的所有元素

remove all elements of a vector of structure with the size of vector 0

本文关键字:元素 向量 结构 小为 删除      更新时间:2023-10-16

我有一个包含结构的向量,需要删除结构的数据成员,并将向量的大小改回0。

#include <vector>
#include <iostream>
using namespace std;
struct item{
unsigned int item_index;
unsigned int item_parent;
item(unsigned int index, unsigned int parent)
{
    item_index = index;
    item_parent   = parent;
}
};
class container{
std::vector<item>obj;
public:
container()
    {
      obj.push_back(item(25,2));
      obj.push_back(item(3,4));          
    }
void display()
{
    cout<<" before "<<obj[0].item_index<<endl;
    obj.clear();                               //obj.resize(0);
    cout<<" after "<<obj[0].item_index<<endl;
}
};
int main()
{
container* cont = new container();
cont->display();
return 0;
}

输出在 25 之后的 25 之前。 我还尝试调整整个矢量的大小以 0 作为矢量的新大小。这也产生了相同的输出。如何将向量的大小更改为 0?

尝试在清除之前和之后打印obj.size()。你会得到 2,然后是 0。这意味着矢量被清除。你再次得到 25 的原因是它仍然留在内存中