【发布时间】:2017-06-22 09:42:40
【问题描述】:
我想在我的 c++ 代码中使用双向链表,该代码需要在所有操作系统(windows、linux、MAC、android)上都可移植。 我在网上读到 std::list 可以表示一个双向链表。
有几个问题,例如: 1)这个操作系统是不可知的吗?它属于 STL 吗? 2) 是否有任何先进的 C++ 表示双重列表的机制?
我的链表节点是这样的:
struct LinkedListNode
{
LInkedList* prev;
LInkedList* next;
struct data
{
// vectorA[]
// vectorB[]
// 2D vectors
// strings
// bool bflag
}
}
【问题讨论】:
-
std::list<T>是标准的一部分。 -
std::list<T>是标准库的一部分,因此它带有任何符合 C++ 的实现。它不一定是一个双链表(即使它经常被实现为一个),但它具有相同的属性,并且它可能比使用手动分配的自制实现更有效/安全/其他... -
实际上,由于缓存未命中,链表在现代机器上效率极低。 Bjarne 说不要使用 - 通常一个向量会更快,即使理论上对于 Big O 来说更糟。
标签: c++ c++11 stl linked-list c++14