首页 > 解决方案 > 将 std::vector 的元素移到前面

问题描述

我有一个std::vector包含对象。

现在我需要遍历向量,找到某个元素并将该元素移动到向量的前面。元素的顺序(除了已移动的元素)必须保持不变。

这段代码说明了我在做什么。为简单起见,这里的对象是 simple ,需要int将元素22移到前面。

#include <vector>

int main()
{
  std::vector<int> v{1,2,22,3,4 };
  for (size_t i = 0; i < v.size(); i++)
  {
    if (v[i] == 22)
    {
      v.insert(v.begin(), v[i]);
      v.erase(v.erase(v.begin() + i + 1, v.begin() + i + 1));
      break;
    }
  }
  // the vector now contains { 22,1,2,3,4 };
}

我的应用程序中的向量不是很大,而且根本不是时间关键的。

这段代码完成了这项工作,但我觉得这很丑陋,而且可能效率很低。

这样做的正确方法是什么?我可以使用 C++17。

标签: c++stdvector

解决方案


推荐阅读