C ++ Vector和Insertion

时间:2015-01-26 18:50:43

标签: c++ vector stl

STL容器的insert方法有两个参数:一个指示插入位置的迭代器和一个要插入的值。 知道insert方法定义了一个新插入的值将插入迭代器当前引用的值之前。

为什么不适合定义插入将新值放在当前值之后?

3 个答案:

答案 0 :(得分:0)

新插入的方法将位于迭代器指向的位置,其他所有内容将“被推送到下一个位置”。

如果你将它放在当前项目之后,那么你实际上是在迭代器+ 1

处插入

答案 1 :(得分:0)

迭代器指向要插入新项目的项目。在语义上,您提供新项目的位置。

如果之后插入了项目,你怎么能在矢量的开头作为第一项插入?

使用当前方案,项目可以插入任何地方。但根据您提出的替代方案,如果没有特殊情况,您不能在开始时插入。

答案 2 :(得分:0)

  1. 因为那时你不可能通过写一下在开头执行插入:

    vect.insert(vect.begin(), value);
    
  2. 因为那时你不可能通过写

    来轻松完成插入
    vect.insert(vect.end(), value);
    
  3. 执行上述操作后,新值实际上位于开始/结束(在插入之后计算,插入之前的迭代器可能无效),就像代码所说的那样。如果您以任何其他方式定义insert,则必须使用+1/-1