連想コンテナ:Set、Map、Multiset、Multimap
メニューを表示するにはスワイプしてください
定義
C++の連想コンテナは、キーを使って要素を効率的に格納・取得する機能。シーケンスコンテナとは異なり、要素が自動的にソートされる(通常は小なり演算子を使用)点が特徴で、std::set、std::map、std::multiset、std::multimapなどの型が含まれる。
連想コンテナは、内部的に平衡二分探索木を使用することで、探索・挿入・削除に対して対数時間計算量を保証。
各コンテナの特徴:
std::setは各キーが一意で、重複を許可しない;std::mapは各一意なキーに単一の値を関連付ける;std::multisetは重複キーを許可し、同じ要素が複数必要な場合に有用;std::multimapは同じキーに複数の値を関連付けることができる。
set_example.cpp
map_example.cpp
1234567891011#include <iostream> #include <set> int main() { std::set<int> s; s.insert(3); s.insert(1); s.insert(2); s.insert(2); // Duplicate, will be ignored }
std::set および std::map はキーの一意性を保証しますが、同じキーを複数格納する必要がある場合もあります。そのような場合には std::multiset および std::multimap を使用します。
main.cpp
123456789101112131415161718192021222324252627#include <iostream> #include <map> #include <string> int main() { // Create a multimap to store names and their grades std::multimap<std::string, int> grades; // Insert multiple grades for the same names grades.insert({"Alice", 85}); grades.insert({"Bob", 90}); grades.insert({"Alice", 92}); grades.insert({"Bob", 78}); // Print all grades for Alice std::cout << "All grades for Alice:\n"; auto range = grades.equal_range("Alice"); // Get range of elements with key "Alice" for (auto it = range.first; it != range.second; ++it) std::cout << it->first << " => " << it->second << "\n"; // Print all entries in the multimap std::cout << "\nAll entries in multimap:\n"; for (const auto& [name, score] : grades) std::cout << name << " => " << score << "\n"; }
すべて明確でしたか?
フィードバックありがとうございます!
セクション 1. 章 3
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください
セクション 1. 章 3