您的位置:首页 > 编程语言 > C语言/C++

C++ Primer 学习笔记——关联容器初识

2016-02-28 14:44 651 查看
关联容器中元素按照关键字来访问和保存

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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: