我正在实现一种算法,该算法需要我在循环的每次迭代中从 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/