c++ - 如何在不丢失现有数据的情况下调整 std::vector 的大小?

标签 c++ c++11 vector

我正在实现一种算法,该算法需要我在循环的每次迭代中从 vector 中删除和添加相同的元素。

例子:

迭代 1:|1 2 3 4| (尺寸 4)

迭代 2:|1 3| 2 4(大小为 2,元素“2”和“4”仍在内存中,但未计入 vector 大小)

迭代 3:|1 2 3| 4(尺寸 3,元素“4”仍然存在)

基本上,出于性能原因,我希望能够在不影响 vector 的情况下更改 size() 函数返回的值。

我知道我可以在我的 vector 之外使用另一个变量来跟踪它的大小,但我想知道它是否可以直接在 std::vector 容器内部实现。

感谢您的帮助。

最佳答案

您想要的在逻辑上与 vector 的工作方式不一致。 size 返回 vector 中类型为 T 的对象的数量。通过减小该尺寸,任何从末端切下的物体都将被销毁。当您增加大小时,您正在添加新对象

最好围绕 vector 构建一个具有您想要的行为的类型。

关于c++ - 如何在不丢失现有数据的情况下调整 std::vector 的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39175949/

相关文章:

c++ - 从qt插入数据到postgres数据库报错

c++ - 在成员初始化列表中填充 std::array

c++ - 从 vector C++ 添加 int 元素时出错

c++ - 字数统计程序 C++

python - 如何检查 python 中的真正相等性(numpy 数组)?

c++ - 在具有可变数组大小的堆上声明对象数组

C++。如何返回空指针而不是函数返回类型?

c++ - STL 排序 vector 查找小于或等于给定值的第一个元素

C++如何检查函数是否正在接收无符号整数?

c++ - Linux下的服务,一种现代方法?