3 / 3 / 0
Регистрация: 27.12.2010
Сообщений: 56
1

Вывод контейнера map

09.10.2011, 19:01. Показов 6787. Ответов 4
Метки нет (Все метки)

Подскажите пожалуйста как вывести на экран значение карты. Программа такая: надо создать карту, где ключ - это фамилия семьи, а значение карты - это вектор. Сам вектор состоит из пар, содержащих имя ребёнка и его возраст. Т.е. под одной фамилией есть несколько детей (с указанным возрастом).
Программа написана, всё вроде работает кроме смого главного... не знаю как вывести на экран значение карты <string, vector< pair <string, int> > > по ключу-фамилии string. Вот прога ключи вывести могу, а значения нет.
C++
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
46
47
48
49
50
51
52
53
54
55
56
#include <iostream>
#include <vector>
#include <string>
#include <utility>
#include <map>
 
using namespace std;
int main ()
{
   map <string, vector< pair <string, int> > > my_map;
 
 
//Ivanov
    vector< pair <string, int> > my_vect;
 
    pair <string, int> para1 ("Sawa", 11) ;
    pair <string, int> para2 ("Mawa", 21) ;
    pair <string, int> para3 ("Tolik", 31) ;
    pair <string, int> para4 ("Boris", 14) ;
 
my_vect.push_back(para1);
my_vect.push_back(para2);
my_vect.push_back(para3);
my_vect.push_back(para4);
 
 
//Petrov
    vector< pair <string, int> > my_vect2;
 
    pair <string, int> para5 ("Ira", 15) ;
    pair <string, int> para6 ("Kat", 24) ;
 
my_vect2.push_back(para5);
my_vect2.push_back(para6);
 
//Sidorov
    vector< pair <string, int> > my_vect3;
 
    pair <string, int> para7 ("Karat", 51) ;
    pair <string, int> para8 ("Marat", 71) ;
    pair <string, int> para9 ("Agat", 81) ;
 
my_vect3.push_back(para7);
my_vect3.push_back(para8);
my_vect3.push_back(para9);
 
my_map ["Ivanov"]=my_vect;
my_map ["Petrov"]=my_vect2;
my_map ["Sidorov"]=my_vect3;
 
cout<<"It's a list of resurved surnames :"<<endl;
for (map<string, vector< pair <string, int> > > ::const_iterator i = my_map.begin(), end = my_map.end(); i != end; ++i)
std::cout << i->first << " : " <<endl; 
system("pause");
return 0;
}
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.10.2011, 19:01
Ответы с готовыми решениями:

Вывод данных контейнера map на экран
Приветствую. Столкнулся с проблемой вывода на экран Memo информации о введенных в контейнер map...

Из каждого элемента контейнера map вычесть среднее арифметическое контейнера
Контейнер map, тип элементов Int 3.Из каждого элемента вычесть среднее арифметическое контейнера

Использование контейнера map
Доброе утро) Никак не пойму как пользоваться контейнером map и зачем он, вообще, нужен?! Скажем...

Копирование содержимого контейнера map
Итак, есть контейнер map&lt;string,fsElem *&gt;, где fsElem - базовый класс, также есть наследуемый от...

4
Каратель
Эксперт С++
6601 / 4020 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
09.10.2011, 19:22 2
C++
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
46
#include <iostream>
#include <utility>
#include <cstdlib>
#include <vector>
#include <string>
#include <map>
 
int main ()
{
    typedef std::vector< std::pair< std::string, int> > vector2;
    typedef std::pair<std::string, int>                 pair_t;
    std::map< std::string, vector2 > my_map;
    vector2 tmp;
    
    tmp.push_back(pair_t("Sawa", 11));
    tmp.push_back(pair_t("Mawa", 21));
    tmp.push_back(pair_t("Tolik", 31));
    tmp.push_back(pair_t("Boris", 14));
 
    my_map["Ivanov"] = tmp;
    tmp.clear();
 
    tmp.push_back(pair_t("Ira", 15));
    tmp.push_back(pair_t("Kat", 24));
 
    my_map["Petrov"] = tmp;
    tmp.clear();
 
    tmp.push_back(pair_t("Karat", 51));
    tmp.push_back(pair_t("Marat", 71));
    tmp.push_back(pair_t("Agat", 81));
 
    my_map["Sidorov"] = tmp;
    tmp.clear();
 
    for (std::map< std::string, vector2 >::const_iterator i = my_map.begin(), end = my_map.end(); i != end; ++i)
    {
        std::cout << "Surname: " << i->first << '\n';
        for (vector2::const_iterator j = i->second.begin(), endV = i->second.end(); j != endV; ++j)
        {
            std::cout << '\t' << j->first << '\t' << j->second << '\n';
        }
    }
    std::system("pause");
    return 0;
}
0
3 / 3 / 0
Регистрация: 27.12.2010
Сообщений: 56
09.10.2011, 19:50  [ТС] 3
Спасибо Скажите пожалуйста

- для чего подключено #include <cstdlib>

- что такое endV

- И в каком разделе мне почитать про typedef - к какой библеотеке это относиться?
0
Каратель
Эксперт С++
6601 / 4020 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
09.10.2011, 21:03 4
Цитата Сообщение от Romiys Посмотреть сообщение
- для чего подключено #include <cstdlib>
нужен для system("pause");, если у вас без него работало то это еще не значит что будет работать в других компиляторах

Цитата Сообщение от Romiys Посмотреть сообщение
- что такое endV
константный итератор вектора указывающий на элемент следующий за последним элементом вектора

Цитата Сообщение от Romiys Посмотреть сообщение
- И в каком разделе мне почитать про typedef - к какой библеотеке это относиться?
typedef не относится к библиотекам, это "примочка" языка.
typedef задает псевдоним типу, например - чтобы постоянно не писать
C++
1
std::vector< std::pair< std::string, int> >
вводим для этого типа псевдоним vector2
2
3 / 3 / 0
Регистрация: 27.12.2010
Сообщений: 56
10.10.2011, 10:11  [ТС] 5
Спасибо за чёткий и понятный ответ
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.10.2011, 10:11

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Реализация контейнера по типу map
Необходимо создать пользовательский класс по типу map, для реализации &quot;словаря&quot;. Можете помочь с...

Удалить элементы из контейнера map
#include &lt;iostream&gt; #include &lt;map&gt; using namespace std; int main() { map&lt;int, int&gt; map1; ...

Объясните код заполнения контейнера map
1) помогите разобраться в коде, вот отрывок: for(i=0; i&lt;m; i++) { mymap.insert(...

Чтение из файла и заполнение контейнера map
Есть такое задание: дан файл,в котором записаны имена студентов.Напротив каждого имени - их...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.