c++STL容器之set/multiset容器
发布时间:2020-12-16 09:06:42 所属栏目:百科 来源:网络整理
导读:1.所有元素在插入时就会被自动排序。 2.底层是二叉树的实现。 3.set中不允许有重复的元素,multiset里面允许有重复的元素。 一、构造函数 set T st; set ( const set st); 二、赋值 set operator ( set st); 三、大小和交换 size();empty();swap(); 四、插入
1.所有元素在插入时就会被自动排序。 2.底层是二叉树的实现。 3.set中不允许有重复的元素,multiset里面允许有重复的元素。 一、构造函数 set<T> st; set(const set &st); 二、赋值 set& operator(set &st); 三、大小和交换 size();
empty();
swap();
四、插入和删除 insert(ele);
clear();
erase(pos);
erase(beg,end);
erase(ele);
五、查找和统计 ? find(key);//查找key是否存在,若存在,则返回该键元素的迭代器,若不存在,则返回set.end(); count(key);统计key的个数 ? 六、对set进行排序 set默认排序是从小到大,可以利用仿函数,改变排序规则。 1.对内置数据类型进行排序 #include<iostream> using namespace std; #include <set> set容器排序 class MyCompare { public: bool operator()(int v1,int v2) const { return v1 > v2; } }; void test01() { set<int>s1; s1.insert(10); s1.insert(40205030); for (int>::iterator it = s1.begin(); it != s1.end(); it++) { cout << *it << " "; } cout << endl; 指定排序规则为从大到小 int,MyCompare>s2; s2.insert(); s2.insert( endl; } int main() { test01(); system("pausereturn 0; } 输出: ? 需要注意的是vs2019重载operator()需要加const,不然会报错。? 2.对自己定义的数据类型进行排序 #include<iostream> string> #include <set> set容器排序,存放自定义数据类型 Person { : Person(string name,1)"> age) { this->m_Name = name; this->m_Age = age; } string m_Name; m_Age; }; comparePerson { const Person& p1,1)">const Person& p2) const按照年龄 降序 return p1.m_Age > p2.m_Age; } }; 自定义数据类型 都会指定排序规则 set<Person,comparePerson>s; 创建Person对象 Person p1(刘备",24); Person p2(关羽28); Person p3(张飞25); Person p4(赵云21); s.insert(p1); s.insert(p2); s.insert(p3); s.insert(p4); ) { cout << 姓名: " << it->m_Name << 年龄: " << it->m_Age << endl; } } ; } 输出: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |