【C++】set容器使用
12071 ワード
1.定義
setコンテナは要素の値に基づいて自動的にソートでき、要素の繰り返しは許可されません
2.基本操作
操作
関数#カンスウ#
宣言
最初の要素を指す反復器を返します.
最後の要素を指す反復器を返します
値要素の数を返します.
コレクション内の要素の数
コレクションに格納できる要素の最大制限値を返します.
コレクション内の最後の要素を指す逆反復器を返します.
コレクション内の最初の要素を指す逆反復器を返します.
すべての要素をクリア
コレクション内の要素の削除
コレクションが空の場合はtrueを返します
検索された要素を指す反復器を返します
コレクションに要素を挿入
2つの集合変数を交換
反復器
最初のkey>=keyelem要素を返す反復器
最初のkey>keyelem要素を返す反復器
コンテナ内のkeyとkeyelemが等しい上下限の2つの反復器を返します.
3.例
4.例題
setコンテナは要素の値に基づいて自動的にソートでき、要素の繰り返しは許可されません
2.基本操作
操作
関数#カンスウ#
宣言
set s
最初の要素を指す反復器を返します.
s.begin()
最後の要素を指す反復器を返します
s.end()
値要素の数を返します.
s.count()
コレクション内の要素の数
s.size()
コレクションに格納できる要素の最大制限値を返します.
s.max_size()
コレクション内の最後の要素を指す逆反復器を返します.
s.rbegin()
コレクション内の最初の要素を指す逆反復器を返します.
s.rend()
すべての要素をクリア
s.clear()
コレクション内の要素の削除
s.erase()
コレクションが空の場合はtrueを返します
s.empty()
検索された要素を指す反復器を返します
s.find()
コレクションに要素を挿入
s.insert()
2つの集合変数を交換
s.swap()
反復器
set::iterator it
最初のkey>=keyelem要素を返す反復器
s.lower_bound(keyelem)
最初のkey>keyelem要素を返す反復器
s.upper_bound(keyelem)
コンテナ内のkeyとkeyelemが等しい上下限の2つの反復器を返します.
s.equal_range(keyelem)
3.例
int main(){
set<int> s;
s.insert(1);
s.insert(5);
s.insert(8);
s.insert(2);
s.insert(101);
s.insert(1);
s.insert(4);//[1,2,4,5,8,101]
cout<<s.max_size()<<endl;//234565^
cout<<s.size()<<endl;//6
cout<<s.count(1)<<endl;//1
cout<<*s.upper_bound(5)<<endl;//8
set<int>::iterator t;
for(t=s.begin();t!=s.end();t++)
cout<<*t<<endl;
return 0;
}
4.例題
set , ,
#include<set>
using namespace std;
class Person{// Person , id
public:
Person(int age, int id): id(id), age(age){}
public:
int id;
int age;
};
class mycompare2{// ,
public: bool operator()(Person p1, Person p2){
return p1.age > p2.age;//
}
};
int main(){
set<Person, mycompare2> sp; //set
Person p1(10,60), p2(30, 40), p3(50, 20);
sp.insert(p1); sp.insert(p2); sp.insert(p3);
for(set<Person, mycompare2>:: iterator it = sp.begin(); it != sp.end(); it++){
cout << it->age << " " << it->id << endl;
}
cout << "--------" << endl;
}