std:: set
|
ヘッダーで定義
<set>
|
||
|
template
<
class
Key,
|
(1) | |
|
namespace
pmr
{
template
<
|
(2) | (C++17以降) |
std::set
は、型
Key
のユニークなオブジェクトを格納するソート済み連想コンテナです。ソートはキー比較関数
Compare
を使用して行われます。検索、削除、挿入操作の計算量は対数時間です。セットは通常
赤黒木
として実装されます。
標準ライブラリが Compare 要件を使用するすべての箇所では、一意性は同値関係を用いて決定されます。大まかに言えば、二つのオブジェクト a と b は、互いに他方より小さいと比較されない場合に同値と見なされます: ! comp ( a, b ) && ! comp ( b, a ) 。
std::set
は
Container
、
AllocatorAwareContainer
、
AssociativeContainer
および
ReversibleContainer
の要件を満たします。
std::setのすべてのメンバー関数は
std::set
は
constexpr
です:定数式の評価中に
std::set
オブジェクトを作成および使用することが可能です。
ただし、
|
(C++26以降) |
目次テンプレートパラメータ
メンバ型
メンバー関数
非メンバー関数
注記
メンバ型
例
このコードを実行
#include <algorithm> #include <iomanip> #include <iostream> #include <iterator> #include <set> #include <string_view> template<typename T> std::ostream& operator<<(std::ostream& out, const std::set<T>& set) { if (set.empty()) return out << "{}"; out << "{ " << *set.begin(); std::for_each(std::next(set.begin()), set.end(), [&out](const T& element) { out << ", " << element; }); return out << " }"; } int main() { std::set<int> set{1, 5, 3}; std::cout << set << '\n'; set.insert(2); std::cout << set << '\n'; set.erase(1); std::cout << set << "\n\n"; std::set<int> keys{3, 4}; for (int key : keys) { if (set.contains(key)) std::cout << set << " does contain " << key << '\n'; else std::cout << set << " doesn't contain " << key << '\n'; } std::cout << '\n'; std::string_view word = "element"; std::set<char> characters(word.begin(), word.end()); std::cout << "There are " << characters.size() << " unique characters in " << std::quoted(word) << ":\n" << characters << '\n'; } 出力: { 1, 3, 5 }
{ 1, 2, 3, 5 }
{ 2, 3, 5 }
{ 2, 3, 5 } does contain 3
{ 2, 3, 5 } doesn't contain 4
There are 5 unique characters in "element":
{ e, l, m, n, t }
不具合報告以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。
関連項目
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||