std :: forward_list - 如何在末尾插入元素

Joh*_*ing 7 c++ stl c++11

forward_list是单个链表(与标准列表容器不同).list具有在前面和后面插入的功能,但forward_list没有在后面插入元素的功能(类似于push_back).为什么不能在列表后面插入元素?

Mik*_*our 10

forward_list与单链表相比,这是一个刻意的设计决策,不应该带来任何开销.这在C++ 11标准(23.3.4.1)中有说明:

注意:forward_list相对于手写的C风格单链表,它的空间或时间开销为零.与该目标冲突的特征已被省略.

维护指向列表末尾的指针会增加空间开销(对于指针本身)和时间开销(在列表末尾插入或擦除元素时更新指针).

  • 这是相当具有误导性的。单向链表维护指向列表末尾的指针或拥有额外的变量来保存项目或其他东西是完全没问题的。与具有相同功能的“手写 C 风格单向链表”相比,将它们放在 `forward_list` 中不会增加任何开销。 (3认同)