C ++中是否有链接列表预定义库?

时间:2009-11-14 19:29:05

标签: c++ linked-list abstract-data-type

C ++中是否有链接列表可以#include?或者,如果我想使用它,我是否需要创建自己的?

6 个答案:

答案 0 :(得分:39)

daniel notes,是的,std::list。用法是:

#include <list>
// ...
std::list<int> listOfInts;
listOfInts.push_back(1);
// ...

等等。

您可以找到STL类here的完整列表。您所追求的部分是3.2,容器类。 C ++标准库的另一个有用的参考是here

答案 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应该是首选,因为它专门针对单链接列表进行了优化。