STL容器的insert方法有两个参数:一个指示插入位置的迭代器和一个要插入的值。 知道insert方法定义了一个新插入的值将插入迭代器当前引用的值之前。
为什么不适合定义插入将新值放在当前值之后?
答案 0 :(得分:0)
新插入的方法将位于迭代器指向的位置,其他所有内容将“被推送到下一个位置”。
如果你将它放在当前项目之后,那么你实际上是在迭代器+ 1
处插入答案 1 :(得分:0)
迭代器指向要插入新项目的项目。在语义上,您提供新项目的位置。
如果之后插入了项目,你怎么能在矢量的开头作为第一项插入?
使用当前方案,项目可以插入任何地方。但根据您提出的替代方案,如果没有特殊情况,您不能在开始时插入。
答案 2 :(得分:0)
因为那时你不可能通过写一下在开头执行插入:
vect.insert(vect.begin(), value);
因为那时你不可能通过写
来轻松完成插入vect.insert(vect.end(), value);
执行上述操作后,新值实际上位于开始/结束(在插入之后计算,插入之前的迭代器可能无效),就像代码所说的那样。如果您以任何其他方式定义insert
,则必须使用+1/-1
。