私はstd::vector<type> myVector
コンテンツは次のとおりです。
el1, el2, el3, splitElement, el4,el5
私は分割splitElement
しsplit1
てsplit2
いて、ベクトルが必要です:
split2, el4, el5, el1, el2, el3, split1
Split2 を開始し、split1 を終了する必要があります。他の要素の順序は、例のようにする必要があります。ベクトルをチェーンとして扱いましょう。2 つの要素とシフト チェーンを挿入して、split2 の最初の要素を作成したいと考えています。stlを使用してそれを行うエレガントで効果的な方法は何ですか.
今のところ私の高速コード(非常に醜い解決策です):
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);
コードなしでトピックを離れたくないという理由だけで追加しました。
どうしたら綺麗にできますか?