【发布时间】:2010-12-16 15:49:20
【问题描述】:
在 C++ 中是否有一个我可以只使用#include 的链表?或者如果我想使用一个,我需要自己创建一个吗?
【问题讨论】:
标签: c++ linked-list abstract-data-type
在 C++ 中是否有一个我可以只使用#include 的链表?或者如果我想使用一个,我需要自己创建一个吗?
【问题讨论】:
标签: c++ linked-list abstract-data-type
作为daniel notes,是的,std::list。用法是:
#include <list>
// ...
std::list<int> listOfInts;
listOfInts.push_back(1);
// ...
等等。
您可以找到完整的 STL 类列表here。您所追求的部分是 3.2,容器类。 C++ 标准库的另一个有用参考是here。
【讨论】:
#include <list>
【讨论】:
【讨论】:
在 C++ 中,我们有 STL,标准模板库,其中包含许多流行数据结构和算法的实现,例如堆栈、队列、链接列表,甚至还有流行的搜索和排序算法...... ..
正如 daniel 所说,您可以通过 #include
【讨论】:
为了全面了解“常见的链接列表”,Qt 库定义了自己的 QLinkedList 作为其容器类(QMap、QString 等)的一部分
它们既支持标准迭代器,也支持Java-Style Iterators,它们具有易于使用的语法:
QLinkedList<QString> list;
list << "A" << "B" << "C" << "D";
QListIterator<QString> i(list);
while (i.hasNext())
qDebug() << i.next();
更新:我最初在 2009 年发布了这个答案,以引起对 Qt 类的关注。在后 C++11 世界中,使用 range-based
for之类的东西,您通常可以获得比 Java 风格的迭代器更好的语法...而不会牺牲性能。因此,虽然这可能值得在我发布时提出完整性,但今天我不太可能提及它。除非您有什么奇怪的理由不这样做,否则只需使用标准库的单链表 (
std::forward_list) 或双链表 (std::list)。
【讨论】:
我知道这个问题已经很老了,无论如何也许值得更新它,因为当您查找 STD 和链表时,它会出现在搜索结果中:
除了其他人已经说过的(使用std::list 表示双链表),对于单链表的最常见用例,应该首选std::forward_list,因为它针对单链表进行了优化- 链表。
【讨论】: