web-dev-qa-db-ja.com

C ++にリンクリストの定義済みライブラリはありますか?

#includeできるリンクされたリストがC++にありますか?それとも使用したい場合は自分で作成する必要がありますか?

22
user69514

ダニエルノート 、はい、- std::list 。使用法は次のとおりです。

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

等々。

STLクラスの完全なリスト ここ を見つけることができます。後のセクションは3.2、コンテナクラスです。 C++標準ライブラリのもう1つの有用なリファレンスは here です。

39
GManNickG
#include <list>
12
Idan K

C++には、STL、標準テンプレートライブラリがあり、スタック、キュー、リンクリストなどの一般的なデータ構造とアルゴリズムの多くの実装が含まれており、一般的な検索と並べ替えのアルゴリズムも含まれています。

すでにダニエルが言ったように、#include <list>でインクルードできます

5
manugupt1
4

「そこにある一般的なリンクリスト」の認識を完了するために、Qtライブラリは独自の QLinkedList をコンテナクラス(QMap、QStringなど)の一部として定義します。

これらは、標準のイテレータと Javaスタイルのイテレータ の両方をサポートしており、使いやすい構文を持っています。

QLinkedList<QString> list;
list << "A" << "B" << "C" << "D";

QListIterator<QString> i(list);
while (i.hasNext())
    qDebug() << i.next();

更新:私は2009年にこの回答を投稿して、Qtクラスに注目を集めました。 範囲ベースのfor などのC++ 11以降の世界では、パフォーマンスを犠牲にすることなく、Javaスタイルのイテレータよりも優れた構文を一般的に取得できます。そうする。

だから、これは私が投稿したときに完全を期すために取り上げる価値があったと思いますが、今日は言及しそうにありません。特別な理由がない限り、標準ライブラリの単一リンクリスト( std::forward_list )または二重リンクリスト( std::list )。

私はこの質問がかなり古いことを知っています。とにかく、STDとリンクされたリストを探すときの検索ヒットに応じて、更新する価値があるかもしれません。

他の人がすでに言っていることに加えて(二重リンクリストの場合は std :: list を使用)、単一リンクリストの最も一般的な使用例は std :: forward_list はシングルリンクリスト用に最適化されているため、推奨されます。

0
D.F