【发布时间】:2015-03-04 04:43:13
【问题描述】:
将向量中的项目从第 4 个位置移动到第 2 个位置的最有效方法是什么。在这种情况下,向量可以包含 100 多个元素。移动元素的算法应该基于迭代器或索引(意思是找到第 4 个元素(源)和第 2 个元素(目标)),哪个更好。我已经根据索引尝试过(What is the most effective way to move items within a vector? 在我的情况下,获取第 4 和第 2 位置的迭代器比计算索引。
【问题讨论】:
-
在这种情况下,向量可能不是合适的数据结构。一个链表。
-
如果它是基元/POD的向量,您可以将移动的元素复制到临时,使用
memmove,然后将元素复制到其目的地。 -
std::swap(vec[2], vec[4]);。你没有说你想对已经处于第二位的人发生什么;此解决方案将其交换到第 4 位。 -
@MattMcNabb:不应该是
vec[1]和vec[3]吗? ;-)。无论如何,假设元素支持移动语义,这个问题甚至没有明确表明vec[1] = vec[3]不是想要的“移动项目”,但我认为 SchighSchagh 对需求的解释很可能是正确的。
标签: c++