【发布时间】:2012-01-05 12:25:16
【问题描述】:
因为:
转发列表是一个支持快速插入和删除的容器 来自容器中任何地方的元素
但是没有 *std::forward_list::push_back* 实现。
是否有一种高性能的方式来添加对单或无理由的支持?
【问题讨论】:
-
为什么需要它?您想双向增加您的列表吗?你不能同样轻松地使用
push_front()吗? -
请注意,双向
std::list还支持“从容器中的任何位置快速插入和删除元素”,并具有push_back。成本是每个条目的额外指针。内存这么紧,用不着吗? -
我想继续排序
-
@AlexanderGuiness:如果您想对其进行排序,
set或multiset可能是更好的选择?这保持了排序顺序,代价是插入和删除速度较慢(尽管插入单个元素会比将其插入列表然后重新排序更快)。 -
@AlexanderGuiness:单链表对于它支持的操作会稍微快一些(因为每个操作必须更新一半的指针),但两者具有相同的复杂度顺序。如果您想支持快速的
push_back,它很可能会更慢。
标签: c++ c++11 std forward-list