关于标准库中sring、char、vector、set、map、queue、stack、bitset等,方法有些记不清楚,每次用每次查,很费时间,干脆自己整理一下,记不住的时候,查询更方便。
关联容器:支持通过键来高效地查找和读取元素。包括:map,set,其中,map:键-值,set:键。
set 仅记录键,不记录值。无重复,键严格弱排序(从小到大,top小,back大)
set<T> tset;
tset.insert(key); // 如果有,则不插入,否则,插入
tset.find(key); // 如果有,则返回1, 否则,返回0. 此方法,有时候不好用。
tset.count(key); // 如果有,则返回1, 否则,返回0. 这个方法更好用。
tset.insert(tvec.begin(), tvec.end()); // 将 vector<T> tvec中的数从 begin到end复制给 tset, 并且会去掉重复的数据。
set操作,同map操作相同。查看下面链接 https://blog.csdn.net/qq_34732729/article/details/100578977
multimap:允许一个键对应多个值。不支持下标操作,其他跟map操作相同
multiset:允许一个键对应多个值。
在multimap和multiset中 添加和删除
multimap<string, string> author;
author.insert(make_pair(string("Jone"), string("book1")));
author.insert(make_pair(string("Jone"), string("book2")));
multimap<string, string>::size_type cnt = authors.erase("Jone"); // 删除这个人的书,并返回删除的数量
在multimap和multiset中 查找元素
string search_author("Jone"); // 查找一个叫Jone的人
typedef multimap<string, string>::size_type sz_type;
sz_type en = author.count(search_author); // 返回有多少条信息,关于这个Jone
multimap<string, string>::iterator iter = author.find(search_author); // 返回Jone的迭代器
for(sz_type cnt = 0; cnt != en; ++cnt, ++iter) // 都++
{cout << iter->second<<end; // 输出作品
}
返回迭代器的关联容器操作
typedef multimap<string, string>::iterator it;
it beg = author.lower_bound(search_author),end = author.upper_bound(search_author);
while(beg != end){cout << beg->second << endl;++beg;
}