【发布时间】:2021-04-22 12:08:55
【问题描述】:
如果我使用vector.erase()比如
std::vector<int> n = { 3, 5, 6, 7 };
n.erase(n.begin() + 1);
vector将移除元素后的所有元素向下移动。
C++ 标准库中是否有不会移动元素的函数?就像把后面的元素放在被移除的元素上然后弹回来?
【问题讨论】:
-
你是如何定义“删除”的?
-
应该怎么做呢?只是跳过已删除的元素?那么它基本上就是一个链表。您是否正在寻找链表和向量之间的某种混合体? (编辑:听起来我没有彻底阅读这个问题。括号指定了它应该做什么)
-
不,没有这样的功能,但是好消息是这需要大约两行代码,所以这可以比写这条评论的时间更快。还有这个问题。
-
不,没有。虽然是自己写的,但它只是一个两行。
-
在这种情况下,也许您必须考虑 std::vector 是否适合您的数据结构。也许 std::list 在您的应用程序中会更有效。