c++ - 将 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。
解决方案
推荐阅读
- javascript - Google 在 icon-fillColor 和 strokeColor 之间映射标记图标填充
- angular - 如何重新组织 app.module.ts 中导出的验证函数?
- c - 如何找到两个 BST 之间的最低公共节点?
- python - 无法安装 mysql 客户端 1.3.12 出现致命错误 C1083:无法打开包含文件:'mysql.h':没有这样的文件或目录
- applescript - 如何使用 AppleScript 在当前激活桌面中打开新应用程序?
- postgresql - 允许在边界重叠的排除约束
- r - r 将不等于 1 或 2 或 3 的值替换为其他值
- java - JFreeChart:使用 ChartMouseEvent 在散点图上显示数据
- vagrant - Vagrant 在执行 'vagrant up' 时抛出错误
- python - 获取艺术家信息的 Artsy api 几乎是空的