C++ set/multiset

来源:互联网 发布:电信光猫有几个端口 编辑:程序博客网 时间:2024/05/16 11:42
//set学习,set是基于红黑树的平衡二叉检索树//构造set集合主要目的是为了快速检索,不可直接去修改键值。//set元素不重复,而multiset元素可重复#include<iostream>#include<set>using namespace std;int main() {int data[] = {10,20,34,24,36,90,45,32,37,78};set<int> s(data,data+sizeof(data)/sizeof(int));//初始化multiset<int> s1(data, data + sizeof(data) / sizeof(int));//初始化//中序遍历cout << "set s 中序遍历后:";set<int>::iterator it1;for (it1 = s.begin();it1 != s.end();it1++)cout << *it1 << " ";//10,20,24,32,34,36,37,45,78,90cout << endl;cout << "multiset s1 中序遍历后:";set<int>::iterator it2;for (it2 = s.begin();it2 != s.end();it2++)cout << *it2 << " ";//10,20,24,32,34,36,37,45,78,90cout << endl;s.insert(10);//s inserts.insert(20);s.insert(34);s.insert(24);s.insert(36);s.insert(90);s.insert(45);s.insert(32);s.insert(37);s.insert(78);s1.insert(10);//s1 inserts1.insert(20);s1.insert(34);s1.insert(24);s1.insert(36);s1.insert(90);s1.insert(45);s1.insert(32);s1.insert(37);s1.insert(78);//逆序遍历cout << "set s 逆序遍历后:" << endl;set<int>::reverse_iterator ir1;for (ir1 = s.rbegin();ir1 != s.rend();ir1++)cout << *ir1 << " ";//90,78,45,37,36,34,32,24,20,10cout << endl;cout << "multiset s1 逆序遍历后:" << endl;multiset<int>::reverse_iterator ir2;for (ir2 = s1.rbegin();ir2 != s1.rend();ir2++)cout << *ir2 << " ";//90,90,78,78,45,45,37,37,36,36,34,34,32,32,24,24,20,20,10,10cout << endl;s.erase(10);//erases1.erase(10);//erasecout << *s.lower_bound(40) << endl;//lower_boundcout << *s.upper_bound(46) << endl;//upper_bounds.clear();s.insert(50);cout << s.max_size() << endl;return 0;}

原创粉丝点击