Sets(组) are a type of associative container(容器) in which each element(元素) has to be unique(独特) because the value of the element(元素) identifies(识别) it. The values are stored in a specific(特定) sorted order i.e. either ascending or descending(下降). 解释set不会有重复的东西,即使插入多个重复的东西,那么仍然只会显示一个,而且是有顺序的。
// C++ program to demonstrate various functions of // STL #include <iostream> #include <iterator> #include <set> using namespace std;
int main() { // empty set container set<int, greater<int> > s1;//说明这个是大的在前
// insert elements in random order s1.insert(40);//插入函数 s1.insert(30); s1.insert(60); s1.insert(20); s1.insert(50);
// only one 50 will be added to the set s1.insert(50); s1.insert(10);
// printing set s1 set<int, greater<int> >::iterator itr;//迭代器 cout << "\nThe set s1 is : \n"; for (itr = s1.begin(); itr != s1.end(); itr++) { cout << *itr << " "; } cout << endl;
// assigning the elements from s1 to s2 set<int> s2(s1.begin(), s1.end());//默认从小到大
// print all elements of the set s2 cout << "\nThe set s2 after assign from s1 is : \n"; for (itr = s2.begin(); itr != s2.end(); itr++) { cout << *itr << " "; } cout << endl;
// remove all elements up to 30 in s2 cout << "\ns2 after removal of elements less than 30 " ":\n"; s2.erase(s2.begin(), s2.find(30));//删去小于三十的 for (itr = s2.begin(); itr != s2.end(); itr++) { cout << *itr << " "; }
// remove element with value 50 in s2 int num; num = s2.erase(50); cout << "\ns2.erase(50) : "; cout << num << " removed\n"; for (itr = s2.begin(); itr != s2.end(); itr++) { cout << *itr << " "; }
cout << endl;
// lower bound and upper bound for set s1 cout << "s1.lower_bound(40) : " << *s1.lower_bound(40) << endl; // lower_bound的指的是<=是可以取到 //upper_bound指的是>是只能取到你想要的更高的一位 cout << "s1.upper_bound(40) : " << *s1.upper_bound(40) << endl;
// lower bound and upper bound for set s2 cout << "s2.lower_bound(40) : " << *s2.lower_bound(40) << endl; cout << "s2.upper_bound(40) : " << *s2.upper_bound(40) << endl;
return0; }
结果
1 2 3 4 5 6 7 8 9 10 11 12 13 14
The set s1 is : 605040302010
The set s2 after assign from s1 is : 102030405060
s2 after removal of elements less than 30 : 30405060 s2.erase(50) : 1 removed 304060 s1.lower_bound(40) : 40 s1.upper_bound(40) : 30 s2.lower_bound(40) : 40 s2.upper_bound(40) : 60