C++ Primer 学习笔记——关联容器初识
2016-02-28 14:44
651 查看
关联容器中元素按照关键字来访问和保存
map key-value对(字典中单词是key,单词释义是value)——关联数组,
set 只保存关键字
multimap
multiset 允许多个元素具有相同的关键字
map
set
定义关联容器
map key-value对(字典中单词是key,单词释义是value)——关联数组,
set 只保存关键字
multimap
multiset 允许多个元素具有相同的关键字
map
map<key类型,value类型> map<string, size_t> words; string word; while (cin >> word) { ++words[word];//word类似数组的下标 } for (auto &s : words) { cout << s.first << "occurs" << s.second << endl; //first保存关键字,second保存值。是pair类的数据成员 }
set
set<key类型> map<string, size_t> words; set<string> exclude = { "i", "a", "is" }; string word; while (cin >> word) { if (exclude.find(word) == exclude.end()) //find()调用返回指向该关键字的迭代器,或者没找到返回尾后迭代器 ++words[word]; } for (auto &s : words) { cout << s.first << "occurs" << s.second << endl; }
//11.4 #include<iostream> #include<map> #include<string> #include<set> using namespace std; int main() { map<string, size_t> words; set<string> exclude = { "i", "a", "is" }; string word; int index = 0; while (cin >> word) { for (auto &s : word) { s=tolower(s); if (ispunct(s)) { s = '\0';//这里还是不对、、、?????? } } if (exclude.find(word) == exclude.end()) ++words[word]; } for (auto &s : words) { cout << s.first << "occurs" << s.second << endl; } return 0; }
定义关联容器
map<string, size_t> words; map<string,string> name={{"af","advs", {"dsvsfda","fsa"}}; //{key,value}构成一个元素 set<string> exclude = { "i", "a", "is" };
//11.7 #include<iostream> #include<string> #include<map> #include<vector> using namespace std; int main() { map<string, vector<string>> familys = { { "shen", {"hongwei","faf"} } }; string xingshi; string name1, name2; while (cin >> xingshi) { cin >> name1; cin >> name2; familys[xingshi].push_back(name1); familys[xingshi].push_back(name2); } for (auto &s : familys) { vector<string> name; name = s.second; for (auto &c : name) cout << s.first << " " << c << " " << endl; } return 0; }
相关文章推荐
- 【C语言】【面试题】C++中String类浅拷贝,深拷贝的传统写法与现代写法
- C++11 auto_ptr 的问题
- (C++)二叉树中的那些常见的面试题
- C++内存泄漏处理
- C语言 包含结构的结构
- C++产生随机数
- C++面试题
- C语言 结构体作为函数的参数
- c语言:求三个数中的最大值(双分支结构)
- C语言(函数与宏)
- Eclipse下搭建C/C++开发环境教程
- How computer work?
- 最新首发Eclipse+CDT+android-ndk写纯c++安卓应用(附openGL Es)
- C语言实现双向非循环链表(不带头结点)的清空
- C/C++中define定义的常量与const常量
- 《你必须知道的495个C语言问题》知识笔记及补充
- C/C++中define定义的常量与const常量
- POJ 2362
- VS2010 C++ 操作Excel表格的编程实现
- C++中将数组作为形参时防止访问越界的几种方法