Swa*_*nil 4 c++ stl list c++11 forward-list
与c ++ 11一样,我们有两种类型的列表:
std::list<int> lst = { 1, 2, 3, 4, 5 };
std::forward_list<int> flst = { 5, 4, 3, 2, 1};
Run Code Online (Sandbox Code Playgroud)
我们知道该列表基于双向链表,而forward_list基于单链表.
我们该如何决定使用哪一个?其他列表中是否有任何性能优势?
我们该如何决定使用哪一个?
确定是否需要双向迭代.如果前向迭代足够好,请使用std::forward_list,除非您需要支持C++ 11之前的C++版本,这些版本可能只有std::list.
其他列表中是否有任何性能优势?
std::forward_list消除每个节点的指针(具有数据高速缓存和内存子系统的所有附带好处),同时std::list提供恒定时间迭代器减量.
但实际上,这些容器都没有像人们在参加计算机科学学校时所认为的那样广泛使用.真正的性能std::vector对于许多应用来说都是优越的,其内存使用率总是更低.需要列表的要求更高的应用程序可以很好地考虑标准C++不提供的侵入式列表.