C ++中是否有链接列表可以#include?或者,如果我想使用它,我是否需要创建自己的?
答案 0 :(得分:39)
赞daniel notes,是的,std::list
。用法是:
#include <list>
// ...
std::list<int> listOfInts;
listOfInts.push_back(1);
// ...
等等。
答案 1 :(得分:12)
#include <list>
答案 2 :(得分:5)
在c ++中,我们有STL标准模板库,它们包含大量流行数据结构和算法的实现,如堆栈,队列,链表以及流行的搜索和排序算法甚至...... ..
正如daniel所说,你可以通过#include&lt;列表&gt;
答案 3 :(得分:4)
答案 4 :(得分:3)
为了完成对“那里的公共链接列表”的认识,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
)。
答案 5 :(得分:0)
我知道这个问题已经很老了,无论如何,当您寻找STD和链表时,可能值得对其进行更新,因为它位于搜索命中:
除了其他人已经说过的话(对于双链表使用std::list),对于单链表的最常见用例,std::forward_list应该是首选,因为它专门针对单链接列表进行了优化。