Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 36, средняя оценка - 4.64
Romiys
3 / 3 / 0
Регистрация: 27.12.2010
Сообщений: 56
#1

контейнер map - C++

02.10.2011, 12:12. Просмотров 4539. Ответов 4
Метки нет (Все метки)

Помогите, пожалуйста дописать программу. Определите карту, в которой ключом является фамилия семьи, а значением вектор, который содержит имя ребёнка и его возраст. Заполните карту по крайней мере 6 елементами.
Проверить работоспособность карты.

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
#include <iostream>
#include <vector>
#include <string>
#include <map>
 
using namespace std;
int main ()
{
   map <string, vector< pair <string, int> > > my_map;
 
    pair <string, int> para1 ("Sawa", 11) ;
    pair <string, int> para2 ("Mawa", 21) ;
    pair <string, int> para3 ("Tolik", 31) ;
    pair <string, int> para4 ("Boris", 14) ;
    pair <string, int> para5 ("Ira", 15) ;
    pair <string, int> para6 ("Kat", 24) ;
 
vector< pair <string, int> > my_vect;
 
my_vect.push_back(para1);
my_vect.push_back(para2);
my_vect.push_back(para3);
my_vect.push_back(para4);
my_vect.push_back(para5);
my_vect.push_back(para6);
 
for (vector< pair <string, int> >::size_type ix=0; ix!=my_vect.size(); ++ix) 
std::cout<< my_vect[ix].first <<" : "<<my_vect[ix].second<<endl;
 
...
 
system("pause");
return 0;
}

Вот имя и возраст ребёнка оформил чераз тип пара (pair), записал в вектор, вывел для проверки на екран, всё работает. А вот как связать заданное значение карты (имя и возраст) с ключом (фамилией), этого не знаю. Допустим там фамилии Иванов, Петров, Сидоров... как к этим ключам подвязать мои заготовленные в векторе значения ?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.10.2011, 12:12
Здравствуйте! Я подобрал для вас темы с ответами на вопрос контейнер map (C++):

Возможно ли создать контейнер std::map, в котором в качестве значения была бы ссылка на std::map? - C++
Здравствуйте. Возможно ли создать контейнер std::map, в котором в качестве значения была бы ссылка на std map? Например: std::map...

Контейнер map - C++
Здравствуйте, работаю с контейнером map, анализирую текст, получаю записи типа &quot;слово: число его появлений в тексте&quot;. Хотелось бы вывести...

Контейнер map - C++
Стоит задача реализовать контейнер map. Вопрос возникает при реализации итератора для этого контейнера. В итераторе должны быть реализованы...

Контейнер map ? - C++
Не совсем удается разобраться Не удается разобраться с ассоциативными контейнерами ! Как выглядит объявление функции в псевдокоде? Что...

Контейнер map - C++
в программе используется ассоциативный массив, идентификатором которого являются символы проблема в том что появляется элемент с...

Контейнер map - C++
Cоздать ассоциативный список имен (ключей), телефонов. Осуществить поиск по именам. Дополнить его данным адрес. Добавить возможности...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Jupiter
Каратель
Эксперт С++
6554 / 3975 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
02.10.2011, 13:11 #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
#include <functional>
#include <algorithm>
#include <iostream>
#include <string>
#include <map>
 
template< class Key, class Val = std::pair < class Key1, class Val1 > >
struct print_pair : std::unary_function< std::pair< Key, Val >, std::ostream& > { 
    std::ostream& ost;
    print_pair(std::ostream& os) : ost(os) { }
    std::ostream& operator() (const std::pair< Key, Val >& p)
    {
        return ost << p.first << '\t' << p.second.first << '\t' << p.second.second << '\n';
    }
};
 
int main ()
{
    std::map< std::string, std::pair< std::string, unsigned > > map;
 
    map["Sidorov"] = std::pair< std::string, unsigned >("Sawa", 11) ;
    map["Ivanov"]  = std::pair< std::string, unsigned >("Mawa", 21) ;
    map["Petrov"]  = std::pair< std::string, unsigned >("Tolik", 31) ;
 
    std::for_each(map.begin(), map.end(), print_pair< std::string, std::pair< std::string, unsigned > >(std::cout));
 
    system("pause");
    return 0;
}
0
rangerx
1933 / 1542 / 141
Регистрация: 31.05.2009
Сообщений: 2,912
02.10.2011, 13:20 #3
C++
1
my_map["фамилия"].push_back(std::make_pair("Sawa", 11));
Но, для наглядности кода я всё-таки рекомендовал бы создать свою структуру вроде
C++
1
2
3
4
5
struct child_base_info
{
    std::string name;
    int age;
};
вместо std::pair. И вот такие конструкции
C++
1
map <string, vector< pair <string, int> > >
лучше прятать используя typedef.
0
Romiys
3 / 3 / 0
Регистрация: 27.12.2010
Сообщений: 56
02.10.2011, 17:17  [ТС] #4
Спасибо, но я без вектора не могу, он должен быть по условию задачи
0
Jupiter
Каратель
Эксперт С++
6554 / 3975 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
02.10.2011, 18:19 #5
Цитата Сообщение от Romiys Посмотреть сообщение
Спасибо, но я без вектора не могу, он должен быть по условию задачи
это не меняет принципа работы с std::map
C++
1
2
3
std::map< KeyType, ValType > map;
map[Key] = Val; 
//если ключ Key уже имеется в контейнере, ему будет присвоено новое значение, иначе - Key будет добавлен в контейнер с значением Val
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.10.2011, 18:19
Привет! Вот еще темы с ответами:

Контейнер map<int, some*> - C++
доброго времени суток. Никак не могу разобраться с проблемой. суть такая. Хочу в классе создать статический контейнер с адресами...

Map контейнер сортировка - C++
Добрый день. Собственно необходимо вывести отсортированный мап контейнер по числу гласных в слове. Вводить строку и выводить мап...

Перевернуть контейнер map? - C++
Здравствуйте. Нужно отсортировать map по убыванию. Сделать что-то вроде прохода от map.end() до map.begin Спасибо.

Ассоциативный контейнер типа map - C++
Привет! Помогите пожалуйста найти ошибку. Программа с Ассоциативным контейнером типа map&lt;string, int&gt;. Прога подсчитывает колличество...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
02.10.2011, 18:19
Ответ Создать тему
Опции темы

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