STL容器的insert方法有两个参数:指示插入位置的迭代器和要插入的值。知道插入方法定义了一个新插入的值将被插入到迭代器当前引用的值之前。
为什么不应该改为定义insert将新值放在当前值之后呢?
发布于 2015-01-26 18:53:19
新插入的方法将位于迭代器所指向的位置,其他所有内容都将被“推到下一个位置”。
如果您将它放在当前项的后面,那么实际上是在iterator+1处插入
发布于 2015-01-26 21:45:35
迭代器指向要在前面插入新项的项。从语义上讲,您提供的是新项目的位置。
如果在后面插入项,如何在向量的开头插入作为第一项?
使用当前方案,可以将项目插入到任何位置。但在您提出的替代方案中,如果没有特殊情况,则不能在开头插入。
发布于 2015-01-26 22:08:30
vect.insert(vect.begin(),value);
vect.insert(vect.end(),value);
执行上述操作后,新值实际上位于begin/end (在insert之后求值,insert之前的迭代器可能无效),正如代码所说的那样。如果您以其他方式定义insert
,则必须使用+1/-1
。
https://stackoverflow.com/questions/28156705
复制