セットする
応じて設定(セット)を特定の順序が保存されている唯一の要素コンテナ。
一組では、要素の値はまた、(タイプT自体のキーの値)を識別することができ、そして各値は一意でなければなりません。
設定要素の値は、コンテナ(常にCONST要素)後修飾することができない、それは容器内に挿入又は容器から除去することができます。
内部要素は、常にその内部に応じて設定される比較(タイプの比較)命令の特定の厳しい弱い順序付けの基準をソートします。
比は、一般的に遅くすることによってアクセスする単一の要素をunordered_setコンテナ船(C ++ 11)キーを設定されているが、それらは、サブセットの反復のサブセットに基づいて直接シーケンスを可能にします。
設定は通常、バイナリ検索ツリーとして実装されています。
コンテナのプロパティコンテナのプロパティ
連想関節
そのキー参照ではなく、コンテナ参照におけるその絶対位置によって関連付けコンテナ要素。
注文したオーダー
秩序コンテナ要素は、常に厳密に順序を遵守しています。
すべての要素がこの順に分配位置に挿入されています。
設定された設定
要素の値は、それを識別するためのキーです。
ユニークキーが一意のキー
の容器には、2つの重要な要素に相当するものを有していなくてもよいです。
アロケータ認識感知ディスペンサ
格納オブジェクトは、動的なプロセスを必要とすることディスペンサー付き容器。
テンプレートパラメータのテンプレートパラメータ
Tの
タイプの要素。
提供される各コンテナ要素は、一意の識別子(各キー要素自体の値)の値によって決定されます。
エイリアスは型のメンバであるset::key_type
とset::value_type
。
コンペア
バイナリ述語を、同じ要素型の2つのパラメータを使用して、ブール値を返します。
COMPは、オブジェクトの種類であると考えられ、そして、bはキー、次いで発現されている場合comp(a,b)
Bの前に配置されている配列の弱関数の厳密な定義は、返された場合true
。
設定されたオブジェクトは、コンテナ内の要素の順序を決定し、二つの重要な要素は、(次の場合の反射を比較することにより、等価で追従するためにこの表現を使用し!comp(a, b) && !comp(b, a)
、それらが等価です)。
次の2つの要素の等価回収容器を持つことはできません。
これは、関数または関数オブジェクト(例えば、コンストラクタを参照)へのポインタとすることができます。
デフォルトは少なく、その戻り値は、オペレータアプリケーション(<B)未満である
会員タイプの別名set::key_compare
とset::value_compare
。
ALLOCは、割り当てられた
メモリの割り当てアロケータ・オブジェクト・モデルのタイプの定義について。
デフォルト値に関係なく、最も簡単なメモリ割り当てモデルを定義し、そして、ディスペンサークラステンプレート。
メンバーの種類としてエイリアスset::allocator_type
。
メンバーの種類のメンバーの種類
メンバ関数のメンバ関数
コンストラクタコンストラクタ
セット建設セットを構築
(1)空容器构造函数(默认构造函数)
构造一个没有元素的空容器。
(2)范围构造器
构造一个包含范围为[first,last)的元素的容器,
每个元素均由该范围内的相应元素构成。
(3)复制构造函数
构造一个容器,其中包含x中每个元素的副本。
// constructing sets
#include <iostream>
#include <set>
using namespace std;
int main ()
{
set<int> first; // empty set of ints
int myints[]= {10,20,30,40,50};
set<int> second (myints,myints+5); // range
set<int> third (second); // a copy of second
set<int> fourth (second.begin(), second.end()); // iterator ctor.
return 0;
}
演算子=演算子=
コピーコンテナのコンテンツコンテナの内容をコピー
// assignment operator with sets
#include <iostream>
#include <set>
int main ()
{
int myints[]={ 12,82,37,64,15 };
std::set<int> first (myints,myints+5); // set with 5 ints
std::set<int> second; // empty set
second = first; // now second contains the 5 ints
first = std::set<int>(); // and first is empty
std::cout << "Size of first: " << int (first.size()) << '\n';
std::cout << "Size of second: " << int (second.size()) << '\n';
return 0;
}
イテレータ:イテレータ:
ベギン
先頭に戻るイテレータ
終わり
最後にイテレータを返します
// set::begin/end
#include <iostream>
#include <set>
int main ()
{
int myints[] = {75,23,65,42,13};
std::set<int> myset (myints,myints+5);
std::cout << "myset contains:";
for (std::set<int>::iterator it=myset.begin(); it!=myset.end(); ++it)
std::cout << ' ' << *it;
std::cout << '\n';
return 0;
}
rbegin
逆先頭に戻るリバースイテレータ
MAKES
逆最後に逆イテレータを返します。
// set::rbegin/rend
#include <iostream>
#include <set>
int main ()
{
int myints[] = {21,64,17,78,49};
std::set<int> myset (myints,myints+5);
std::set<int>::reverse_iterator rit;
std::cout << "myset contains:";
for (rit=myset.rbegin(); rit != myset.rend(); ++rit)
std::cout << ' ' << *rit;
std::cout << '\n';
return 0;
}
容量:容量:
空の
容器が空であるかどうかをテスト
// set::empty
#include <iostream>
#include <set>
int main ()
{
std::set<int> myset;
myset.insert(20);
myset.insert(30);
myset.insert(10);
std::cout << "myset contains:";
while (!myset.empty())
{
std::cout << ' ' << *myset.begin();
myset.erase(myset.begin());
}
std::cout << '\n';
return 0;
}
myset contains: 10 20 30
サイズ
戻りコンテナのサイズは、
コンテナのサイズを返します。
// set::size
#include <iostream>
#include <set>
int main ()
{
std::set<int> myints;
std::cout << "0. size: " << myints.size() << '\n';
for (int i=0; i<10; ++i) myints.insert(i);
std::cout << "1. size: " << myints.size() << '\n';
myints.insert (100); //将整数 100 插入到set集合myints中
std::cout << "2. size: " << myints.size() << '\n';
myints.erase(5); //将整数 5 从set集合myints中移除
std::cout << "3. size: " << myints.size() << '\n';
return 0;
}
0. size: 0
1. size: 10
2. size: 11
3. size: 10
MAX_SIZE
リターンの最大サイズは
、最大サイズを返します
要素の最大数は、コンテナを保持することができます返すために提供しました。そのため、既知のシステムやライブラリの実装上の制約により、
最大の潜在的なコンテナのサイズを達成することが可能であるが、それは、コンテナのサイズを達成することができる保証することはできません。このサイズに達する前に、それはまだ、いつでもストレージを割り当てません。
Return maximum size
返回最大尺寸
返回设置的容器可以容纳的最大元素数。由于已知的系统或库实现限制,
这是容器可以达到的最大潜在大小,但绝不能保证容器能够达到该大小:在达到该大小之前,它仍然无法在任何时候分配存储。
// set::max_size
#include <iostream>
#include <set>
int main ()
{
int i;
std::set<int> myset;
if (myset.max_size()>1000)
{
for (i=0; i<1000; i++) myset.insert(i);
std::cout << "The set contains 1000 elements.\n";
}
else std::cout << "The set could not hold 1000 elements.\n";
return 0;
}