在向量中插入多个值

Baz*_*Baz 5 c++ boost c++98

我有一个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是一种方法,但当你意识到你需要记住跳过你刚刚插入的值时它会变得混乱.

Ben*_*ley 7

这是我可能会做的:

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)执行初始迭代,以确定要保留的元素的确切数量,但是如果不进行测试,我不知道这是否会提高性能.

  • 我保留()`原始的内存量,但是看起来不错.如果我按下了性能,我还会尝试将元素从一个容器交换/移动到另一个容器. (3认同)