为什么 Forward List 的方法有"after"版本,而不是使用 List 的界面?

  • 本文关键字:List 界面 after Forward 方法 版本 c++
  • 更新时间 :
  • 英文 :


List中的insertemplaceerasespliceForward List中替换为insert_afteremplace_aftererase_aftersplice_after。为什么?

*我理解这些方法之间的区别,我想问为什么我们需要不同的方法来进行操作

insert被定义为"在";对于大多数容器,因为end()迭代器被定义为";一个过终点";。在CCD_ 13为"0"的情况下;在"之前插入";,你可以把它称为整个范围[begin()end()],包括在内。如果将CCD_ 16定义为";在"之后插入";,在end()迭代器上调用它将是Undefined Behavior。

然而,这需要容器支持双向迭代器,即可以递减的迭代器。为了限制内存使用,std::forward_list仅支持前向迭代器。如果只有正向迭代器,就不能返回一个元素插入,所以唯一可用的操作是";在"之后插入";。它的局限性是不能在end()迭代器上调用,但总比什么都没有好。

最新更新