MyTetra Share
Делитесь знаниями!
Словари (map)
Время создания: 26.07.2017 17:07
Раздел: Computer - Programming - C++

#include <iostream>

#include <vector>

#include <string>

#include <map>


using namespace std;


void PrintMap(const map<int, string>& m)

{

cout << "Size: " << m.size() << endl;

for(const auto& i : m)

{

cout << i.first << ": " << i.second << endl;

}

}


void PrintMapReversed(const map<string, int>& m)

{

for(const auto& i : m)

{

cout << i.first << " - " << i.second << endl;

}

}


map<string, int> BuildReversedMap(const map<int, string>& m)

{

map<string, int> result;

for(const auto& i : m)

{

result[i.second] = i.first;

}

return result;

}


int main()

{

map<int, string> events;

events[1950] = "Bjarne Stroustrup's birth";

events[1941] = "Dennis Rotchie's birth";

events[1970] = "UNIX epoch start";

events[1991];

PrintMap(events);


cout << events[1950] << endl;

events.erase(1970);

PrintMap(events);

cout << "end of #1" << endl << endl;


//разворачиваем словарь

map<string, int> dates;

dates = BuildReversedMap(events);

PrintMapReversed(dates);

cout << "end of #2" << endl << endl;


//даже при обращении к ключу словаря,

//если этого ключа не существовало на момент обращения,

//то он будет автоматически создан:

events[2017];

PrintMap(events);

++dates["The New Age"]; //создалась запись с индексом 0 и проинкрементировалась

PrintMapReversed(dates);

cout << "end of #3" << endl << endl;


//дан вектор строк, создадим словарь

//соответствия первой буквы и элементу вектора

vector<string> words = {"one", "two", "three"};

map<char, vector<string>> grouped_words;

for(const string& s : words)

{

grouped_words[s[0]].push_back(s); //s[0]; 0 - номер символа

}

//выведем:

for(const auto& i : grouped_words)

{

cout << i.first << ": ";

for(const string& j : i.second)

{

cout << j << " ";

}

cout << endl;

}

cout << "end of #4" << endl << endl;


//пример создания и удаления элементов словаря

map<int, string> mapo = {{1, "odd"}, {2, "even"}, {1, "one"}};

cout << mapo.size() << endl;

mapo[2] = "two";

cout << mapo.size() << endl;

mapo.erase(1);

cout << mapo.size() << endl;

mapo[3] = "three";

cout << mapo.size() << endl;

mapo.erase(4);

cout << mapo.size() << endl;

mapo[5] = "five";

cout << mapo.size();


system("pause");

return 0;

}

 
MyTetra Share v.0.53
Яндекс индекс цитирования