Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.95/37: Рейтинг темы: голосов - 37, средняя оценка - 4.95
4 / 4 / 0
Регистрация: 27.12.2010
Сообщений: 56

контейнер map

02.10.2011, 12:12. Показов 7553. Ответов 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
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.10.2011, 12:12
Ответы с готовыми решениями:

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

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

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

4
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
02.10.2011, 13:11
вектор сдесь нафиг не нужен
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
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
02.10.2011, 13:20
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
4 / 4 / 0
Регистрация: 27.12.2010
Сообщений: 56
02.10.2011, 17:17  [ТС]
Спасибо, но я без вектора не могу, он должен быть по условию задачи
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
02.10.2011, 18:19
Цитата Сообщение от Romiys Посмотреть сообщение
Спасибо, но я без вектора не могу, он должен быть по условию задачи
это не меняет принципа работы с std::map
C++
1
2
3
std::map< KeyType, ValType > map;
map[Key] = Val; 
//если ключ Key уже имеется в контейнере, ему будет присвоено новое значение, иначе - Key будет добавлен в контейнер с значением Val
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.10.2011, 18:19
Помогаю со студенческими работами здесь

Контейнер map
подскажите пожалуйста, как можно заполнить контейнер map с клавиатуры ?

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

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

Контейнер map
Почему нельзя писать route? Строки 4,6. bool search(const map&lt;int, set&lt;string&gt;&gt;&amp; route, const set&lt;string&gt;&amp; vstr) { for (int i...

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru