#author("2023-02-09T01:10:48+09:00","","")
#author("2023-02-17T22:06:27+09:00","","")
#topicpath

//////////////////////////////////////////////////////////////////////////////
* 目次 [#aa38371b]
#contents();




//////////////////////////////////////////////////////////////////////////////
* std::array : 固定長配列 [#yd0410fc]
- std::vector が可変長配列であるのに対し、 std::array は固定長配列になる
- 組み込み配列同様、[] 演算子を使用出来る。
 std::array<TYPE, SIZE>
 
 TYPE: 配列にする型
 SIZE: 配列要素数

//============================================================================
** 初期化 [#ka1a558e]
- デフォルトのオブジェクト構築。各要素はデフォルト初期化される
 std::array<int, 4> a;
- 初期化子リストから array オブジェクトを構築。各要素はデフォルト初期化又は0初期化される。
 std::array<int, 4> a = {};
- 初期化子リストから array オブジェクトを構築
 std::array<int, 4> a = {1, 2, 3, 4};
- 別の array オブジェクトの代入によるコピー初期化
 std::array<int, 4> a = b;
- move 構築。渡された array オブジェクトを *this に移動する。
 std::array<int, 4> a = std::move(a0);



//////////////////////////////////////////////////////////////////////////////
* std::forward_list : 単方向リスト [#ac02db07]
- 単方向にのみ辿れるリスト

//////////////////////////////////////////////////////////////////////////////
* [[std::string>Lang/C++/C++11/コンテナ/string]] [#o4ecc420]
→ [[std::string>Lang/C++/C++11/コンテナ/string]]

//////////////////////////////////////////////////////////////////////////////
* std::unordered_set : 順序なし集合(重複不可) [#ibda44d6]

//////////////////////////////////////////////////////////////////////////////
* std::unordered_multilist : 順序なし集合(重複可) [#y13cd77a]

//////////////////////////////////////////////////////////////////////////////
* std::map [#a965a67c]
- 初期化
-- 空の map を生成
 typedef std::map<int, char*> name_map_t;
 name_map_t name_map;
-- 要素を入れて生成
 typedef std::map<int, char*> name_map_t;
 name_map_t name_map = { { 1, "aa" }, { 2, "bb" }, { 32, "xx" } };
-- 既存の map からコピーして生成
 name_map_t nn = name_map;

- 要素の挿入
 name_map_t name_map;
 name_map[23] = "test";
 name_map[91] = "hoge";
 ...
- 要素の検索
 auto it = name_map.find( 23 );
 // 存在するので、その iterator が返る
 std::cout << it->second << std::endl;    // "test" が print される
 
 int key_val = 71;
 it = name_map.find( key_val );
 // 存在しないので、end(); の iterator が返る
 if( it == name_map.end() ) {
      // ここを通る
      std::cout << "Not found: [key:" << key_val << "]" << std::endl;
 }

//////////////////////////////////////////////////////////////////////////////
* std::unordered_map : 順序なし連想配列(重複不可) [#hf81527c]

//////////////////////////////////////////////////////////////////////////////
* std::unordered_multimap : 順序なし連想配列(重複可) [#b6697d84]



//////////////////////////////////////////////////////////////////////////////
* queue [#jef2709a]
** queue [#c380237b]
 #include <queue>
 std::queue<string> q;
 q.push( "hoge" );
 q.push( "fuga" );
 
 while( !q.empty() ) {
     std::cout << q.front() << std::endl;
     q.pop();
 }

- コピー・ムーブが可能
- pop() は値を返さない

** priprity_queue [#i6594f09]
 #include <queue>
 std::priority_queue<string> q;
 
 q.push( "hoge" );
 q.push( "fuga" );
 q.push( "foo" );
 q.push( "bar" );
 
 while( !q.empty() ) {
     std::cout << q.front() << std::endl;
     q.pop();
 }

- コピー・ムーブが可能
- pop() は値を返さない

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS