#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() は値を返さない