我有一个std::vector<T>变量.我还有两个类型为T的变量,第一个表示我要插入的向量中的值,而第二个表示要插入的值.
所以我想说我有这个容器: 1,2,1,1,2,2
并且就上面的定义而言,这两个值是2和3.然后我希望编写一个函数来更新容器,而不是包含:
1,2,3,1,1,2,3,2,3
Run Code Online (Sandbox Code Playgroud)
我正在使用c ++ 98和boost.我可以用什么std或boost函数来实现这个功能?
迭代向量并使用std :: insert是一种方法,但当你意识到你需要记住跳过你刚刚插入的值时它会变得混乱.
这是我可能会做的:
vector<T> copy;
for (vector<T>::iterator i=original.begin(); i!=original.end(); ++i)
{
copy.push_back(*i);
if (*i == first)
copy.push_back(second);
}
original.swap(copy);
Run Code Online (Sandbox Code Playgroud)
如果你愿意,可以打电话预约.你知道至少需要original.size()元素空间.您还可以对向量(或使用std::count)执行初始迭代,以确定要保留的元素的确切数量,但是如果不进行测试,我不知道这是否会提高性能.