List
中的insert
、emplace
、erase
和splice
在Forward List
中替换为insert_after
、emplace_after
、erase_after
和splice_after
。为什么?
*我理解这些方法之间的区别,我想问为什么我们需要不同的方法来进行操作
insert
被定义为"在";对于大多数容器,因为end()
迭代器被定义为";一个过终点";。在CCD_ 13为"0"的情况下;在"之前插入";,你可以把它称为整个范围[begin()
,end()
],包括在内。如果将CCD_ 16定义为";在"之后插入";,在end()
迭代器上调用它将是Undefined Behavior。
然而,这需要容器支持双向迭代器,即可以递减的迭代器。为了限制内存使用,std::forward_list
仅支持前向迭代器。如果只有正向迭代器,就不能返回一个元素插入,所以唯一可用的操作是";在"之后插入";。它的局限性是不能在end()
迭代器上调用,但总比什么都没有好。