C++ Primer 学习笔记_10_标准模板库_map和set的对比
|
set |
multiset |
创建 |
set<int> str |
multiset<string> str |
插入 |
str.insert(8) |
str.insert(“abc”) |
遍历 |
set<int>::iterator iter |
multiset< string >::iterator iter |
输出 |
*iter |
*iter |
删除 |
n = str.erase(8) 删除个数只能是0或1 |
n = str.erase(“123”) erase()返回删除元素的个数 |
清空 |
str.clear() |
str.clear() |
当前容量 |
str.size() |
str.size() |
查找 |
iter = str.find() 没有找到,返回str.end() |
iter = str.find() 没有找到,返回str.end() |
非结构体比较函数 |
struct myComp { bool operator()(int a, int b) { return a > b; } }
定义:set<int, myComp> str |
struct myComp { bool operator()(string a, string b) { return a > b; } }; multiset<string, myComp> str |
结构体比较函数 (如果要由小到大排序,使用”>”号即可) |
struct Info { string name; float score; bool operator < (Info a) const { return a.score < score; } } |
struct Info { string name; float score; bool operator < (Info a) const { return a.score < score; } };
|
|
map |
multimap |
创建 |
map<string, float> str |
multimap<string, double> str |
插入 |
str[“Jack”] = 98.5 |
str.insert(pair<string, double>("Jack", 400)) |
遍历 |
map<string, float>::iterator iter |
multiset<string, double>::iterator iter |
输出 |
(*iter).first (*iter).second |
(*iter).first (*iter).second |
删除 |
n = str.erase(“Jack”) 删除个数,只能是0或1 |
n = str.erase(“Jack”) erase()返回删除元素的个数 |
清空 |
str.clear() |
str.clear() |
当前容量 |
str.size() |
str.size() |
查找 |
iter = str.find() 没有找到,返回str.end() |
iter = str.find() 没有找到,返回str.end() |
非结构体比较函数 |
struct myComp { bool operator()(int a, int b) { return a > b; } }
定义:set<int, char, myComp> str |
struct myComp { bool operator()(string a, string b) { return a > b; } }
定义:set< string, double, myComp> str |
结构体比较函数 (如果要由小到大排序,使用”>”号即可) |
struct Info { string name; float score; bool operator < (Info a) const { return a.score < score; } } |
struct Info { string name; float score; bool operator < (Info a) const { return a.score < score; } } |
参考 :
《C++ primer 第四版》
《ACM程序设计》
版权声明:本文为博主原创文章,未经博主允许不得转载。
C++ Primer 学习笔记_10_标准模板库_map和set的对比
原文地址:http://blog.csdn.net/keyyuanxin/article/details/46922431