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