Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ 連想コンテナ:Set、Map、Multiset、Multimap | イントロダクション
C++ STLコンテナとアルゴリズム

book連想コンテナ:Set、Map、Multiset、Multimap

メニューを表示するにはスワイプしてください

Note
定義

C++の連想コンテナは、キーを使って要素を効率的に格納・取得する機能。シーケンスコンテナとは異なり、要素が自動的にソートされる(通常は小なり演算子を使用)点が特徴で、std::setstd::mapstd::multisetstd::multimapなどの型が含まれる。

連想コンテナは、内部的に平衡二分探索木を使用することで、探索・挿入・削除に対して対数時間計算量を保証。

各コンテナの特徴:

  • std::setは各キーが一意で、重複を許可しない;
  • std::mapは各一意なキーに単一の値を関連付ける;
  • std::multiset重複キーを許可し、同じ要素が複数必要な場合に有用;
  • std::multimapは同じキーに複数の値を関連付けることができる。
set_example.cpp

set_example.cpp

map_example.cpp

map_example.cpp

copy
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

main.cpp

copy
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"; }
question mark

C++の連想コンテナの主要な特徴を正しく説明している文はどれですか?

正しい答えを選んでください

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 1.  3

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 1.  3
some-alt