我有std::vector<type> myVector
可以说内容是:
el1, el2, el3, splitElement, el4,el5
我正在分裂,splitElement
我
想要向量:split1
split2
split2, el4, el5, el1, el2, el3, split1
Split2 应该开始,split1 结束。其他元素顺序应如示例中所示。让我们将向量视为链。我想插入两个元素并移位链以使 split2 第一个元素。使用 stl.js 的优雅而有效的方法是什么?
我现在的快速代码(这是非常丑陋的解决方案):
std::vector<type> before;
std::vector<type> after;
bool afterBool = false;
for(std::vector<type>::iterator it = myVector.begin(); it != myVector.end(); it++)
{
if(*it == splitElement)
{
afterBool = true;
before.push_back(split1);
after.push_back(split2);
}
else if(afterBool)
after.push_back(*it);
else
before.push_back(*it);
}
myVector.clear();
for(std::vector<type>::iterator it = after.begin(); it != after.end(); it++)
myVector.push_back(*it);
for(std::vector<type>::iterator it = before.begin(); it != before.end(); it++)
myVector.push_back(*it);
我添加它只是因为我不想在没有任何代码的情况下离开主题。
如何以好的方式做到这一点?