C++ コンテナクラス<set>
C++ 標準ライブラリの<set>は連想コンテナであり、一意の要素の集合を格納し、一定の順序でソートされます。
<set>効率的な要素の検索、挿入、削除操作を提供します。これは赤黒木に基づいて実装されているため、検索、挿入、削除は対数時間計算量を持ちます。
<set>コンテナに格納される要素の型は以下の条件を満たす必要があります:
- 要素の型は大小比較が可能でなければなりません。
- 要素の型はコピーおよび代入が可能でなければなりません。
構文
ヘッダーファイルをインクルードします:
#include <set>
set コンテナを宣言する
std::set<元素类型> 容器名;
よく使う操作
insert(元素): 要素を挿入します。erase(元素): 要素を削除します。find(元素): 要素を検索します。size(): コンテナ内の要素数を返します。empty(): コンテナが空かどうかを確認します。
例
以下は、<set>を使用した簡単な例です。要素の挿入、検索、削除、および出力結果を含みます。
例
#include <iostream>
#include <set>
int main() {
// 整数型の set コンテナを宣言する
std::set<int> mySet;
// 要素を挿入する
mySet.insert(10);
mySet.insert(20);
mySet.insert(30);
mySet.insert(40);
// set 内の要素を出力する
std::cout << "Set contains: ";
for (int num : mySet) {
std::cout << num << " ";
}
std::cout << std::endl;
// 要素を検索する
if (mySet.find(20) != mySet.end()) {
std::cout << "20 is in the set." << std::endl;
} else {
std::cout << "20 is not in the set." << std::endl;
}
// 要素を削除する
mySet.erase(20);
// set 内の要素を再度出力する
std::cout << "After erasing 20, set contains: ";
for (int num : mySet) {
std::cout << num << " ";
}
std::cout << std::endl;
// set が空かどうかを確認する
if (mySet.empty()) {
std::cout << "The set is empty." << std::endl;
} else {
std::cout << "The set is not empty." << std::endl;
}
// set 内の要素の数を出力する
std::cout << "The set contains " << mySet.size() << " elements." << std::endl;
return 0;
}
#include <set>
int main() {
// 整数型の set コンテナを宣言する
std::set<int> mySet;
// 要素を挿入する
mySet.insert(10);
mySet.insert(20);
mySet.insert(30);
mySet.insert(40);
// set 内の要素を出力する
std::cout << "Set contains: ";
for (int num : mySet) {
std::cout << num << " ";
}
std::cout << std::endl;
// 要素を検索する
if (mySet.find(20) != mySet.end()) {
std::cout << "20 is in the set." << std::endl;
} else {
std::cout << "20 is not in the set." << std::endl;
}
// 要素を削除する
mySet.erase(20);
// set 内の要素を再度出力する
std::cout << "After erasing 20, set contains: ";
for (int num : mySet) {
std::cout << num << " ";
}
std::cout << std::endl;
// set が空かどうかを確認する
if (mySet.empty()) {
std::cout << "The set is empty." << std::endl;
} else {
std::cout << "The set is not empty." << std::endl;
}
// set 内の要素の数を出力する
std::cout << "The set contains " << mySet.size() << " elements." << std::endl;
return 0;
}
出力結果:
Set contains: 10 20 30 40 20 is in the set. After erasing 20, set contains: 10 30 40 The set is not empty. The set contains 3 elements.
まとめ
<set>は C++ 標準ライブラリの中でも非常に便利なコンテナであり、高速な検索、挿入、削除操作が必要な場面に特に適しています。上記の例を通じて、初心者は<set>の基本的な使い方について明確な理解を得ることができます。実際の開発では、<set>プログラムの効率と可読性を向上させることができます。