1 2 3 4 5 6 7 8 9 10 |
//C++ Листинг #1 map #include <iostream> #include <map> using namespace std; int main(){ setlocale(LC_ALL, ""); map<string, int> m; //для ключей предопределяем тип string, а для данных int } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
//C++ Листинг #2 Знакомство с map #include <iostream> #include <map> //Будем использовать map using namespace std; int main(){ setlocale(LC_ALL, ""); map<string, int> m; //для ключей предопределяем тип string, а для данных int m ={ {"Ауди", 1000}, {"Фольцваген", 900}, {"Мерседес", 3000}, }; //Теперь можно вытащить значение по ключу: cout << m["Ауди"] << '\n'; cout << m["Фольцваген"] << '\n'; cout << m["Мерседес"] << '\n'; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
//C++ Листинг #3.1 Обход map #include <iostream> #include <map> using namespace std; int main(){ setlocale(LC_ALL, ""); map<string, int> m; //для ключей предопределяем тип string, а для данных int m ={ {"Ауди", 1000}, {"Фольцваген", 900}, {"Мерседес", 3000}, }; map<string, int>::iterator it; //объявили итератор it = m.begin(); //установили его на начало map while (it != m.end()){ cout << it -> first << ": "; //вытаскиваем ключ cout << it -> second; //вытаскиваем значение cout << '\n'; it++; //устанавливаем итератор на следующий элемент обходимой структуры данных } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
//C++ Листинг #3.2 Обход map map<string, int> m; //для ключей предопределяем тип string, а для данных int m ={ {"Ауди", 1000}, {"Фольцваген", 900}, {"Мерседес", 3000}, }; for (map<string, int>::iterator it=m.begin(); it!=m.end(); it++){ cout << it -> first << ": "; //вытаскиваем ключ cout << it -> second; //вытаскиваем значение cout << '\n'; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
//C++ Листинг #4 map Меняем значения #include <iostream> #include <map> using namespace std; int main(){ setlocale(LC_ALL, ""); map<string, int> m; //для ключей предопределяем тип string, а для данных int m ={ {"Ауди", 1000}, {"Фольцваген", 900}, {"Мерседес", 3000}, }; m["Ауди"] = m["Ауди"] + 77; //Возросло на 77 m["Фольцваген"] = 1000; //Обновилаось, стало 1000 m.find("Мерседес") -> second = 4000; //и вот так можно (second <—-- значение) for (auto it: m){ cout << it.first << ": "; cout << it.second << '\n'; } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
//C++ Листинг #a1 Создание pair #include <iostream> #include <utility> using namespace std; int main(){ setlocale(LC_ALL, ""); pair<string, int> p1; pair<string, int> p2; pair<string, int> p3; p1 = make_pair("Ауди", 1000); p2 = make_pair("Фольцваген", 1000); p3 = make_pair("Мерседес", 1000); } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
//C++ Листинг #5.1 Вставляем (pair) в (map) #include <iostream> #include <utility> #include <map> using namespace std; int main(){ setlocale(LC_ALL, ""); pair<string, int> p1; pair<string, int> p2; pair<string, int> p3; p1 = make_pair("Ауди", 1000); p2 = make_pair("Фольцваген", 2000); p3 = make_pair("Мерседес", 3000); map<string, int> m; //для ключей предопределяем тип string, а для данных int m.insert(p1); m.insert(p2); m.insert(p3); for (auto it: m){ cout << it.first << ": "; cout << it.second << '\n'; } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
//C++ Листинг #5.2 Вставляем (pair) в (map) #include <iostream> #include <utility> #include <map> using namespace std; int main(){ setlocale(LC_ALL, ""); map<string, int> m; //для ключей предопределяем тип string, а для данных int m.insert(make_pair<string, int>("Ауди", 1000)); m.insert(make_pair<string, int>("МЕРСЕДЕС", 2000)); m.insert(make_pair<string, int>("МЕРСЕДЕС", 5000)); // ключ "Мерседес" уже есть for (auto it: m){ //Получилось только две ячейки cout << it.first << ": "; cout << it.second << '\n'; } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
//C++ Листинг #6 Использование своего типа для ключа map #include <iostream> #include <map> #include <utility> using namespace std; struct A{ //Структура для ключей const string caption; A(string caption): caption(caption){} }; struct B{ //Cтруктура для значений int value; }; bool operator<(const A a,const A b){ return a.caption < b.caption; //сравнение ключей для сортировки } int main() { map<A,B> m; A a1("Ауди"); A a2("Мерседес"); A a3("Фольцваген"); B b1 = {1}; B b2 = {2}; B b3 = {3}; m.insert(make_pair(a1, b1)); m.insert(make_pair(a2, b2)); m.insert(make_pair(a3, b3)); cout << "a1: " << m[a1].value << '\n'; cout << "a2: " << m[a2].value << '\n'; cout << "a3: " << m[a3].value << '\n'; cout << "======================\n"; for (const auto &i:m){ cout << i.second.value << '\n'; } } |
Добавить комментарий