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

Использование контейнера map

21.04.2012, 10:02. Показов 7796. Ответов 7
Метки нет (Все метки)

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

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <string>
#include <map>
 
int main(){
map<string, int> a;
a["Jacob"]="15";
a["Isabella"]="17";
 
//на этом мои знания закончились(((
 
return 0;
}
И что можно дальше делать?
Может кто разъяснит или подскажет какую литературу почитать (только чтоб доступным языком написано было)
0

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

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

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

Вывод контейнера map
Подскажите пожалуйста как вывести на экран значение карты. Программа такая: надо создать карту, где...

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

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

7
Эксперт С++
3210 / 1458 / 73
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
21.04.2012, 11:43 2
можно значения извлекать по ключу.
в принципе, это все что должен делать map
0
Эксперт С++
1666 / 1038 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
21.04.2012, 12:18 3
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
#include <iostream>
#include <string>
#include <map>
 
using std::string;
using std::map;
using std::cout;
using std::cin;
using std::endl;
 
typedef map<string, int> mymap;
typedef mymap::const_iterator iter;
 
int main(){
    mymap a;
    a["Jacob"] = "15";
    a["Isabella"] = "17";
    string name;   // Имя для поиска в map
    cout << "Enter name: ";
    cin >> name; 
    iter i = a.find(name);   // Сам поиск
    if(i != a.end())     // Если что-нибудь нашли
        cout << "Number for name \"" << name << "\" is " << i->second << endl;
    else
        cout << "Name not found!" << endl;
    cin.get();   // Пауза
    return 0;
}
1
Каратель
Эксперт С++
6601 / 4020 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
21.04.2012, 15:01 4
Цитата Сообщение от BadRomance Посмотреть сообщение
C++
1
2
3
map<string, int> a;
a["Jacob"]="15";
a["Isabella"]="17";
а они есть эти знания? значения карты - целочисленный тип
0
0 / 0 / 0
Регистрация: 08.04.2012
Сообщений: 40
22.04.2012, 23:25  [ТС] 5
Цитата Сообщение от Nick Alte Посмотреть сообщение
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
#include <iostream>
#include <string>
#include <map>
 
using std::string;
using std::map;
using std::cout;
using std::cin;
using std::endl;
 
typedef map<string, int> mymap;
typedef mymap::const_iterator iter;
 
int main(){
    mymap a;
    a["Jacob"] = "15";
    a["Isabella"] = "17";
    string name;   // Имя для поиска в map
    cout << "Enter name: ";
    cin >> name; 
    iter i = a.find(name);   // Сам поиск
    if(i != a.end())     // Если что-нибудь нашли
        cout << "Number for name \"" << name << "\" is " << i->second << endl;
    else
        cout << "Name not found!" << endl;
    cin.get();   // Пауза
    return 0;
}
Спасибо, смысл программы понятен, точнее то, что она делает!
Только вот после компиляции вот такие вот ошибки:
(в 16 и 17 строке)
invalid conversion from 'const char*' to 'int'

а они есть эти знания?
Не понятен смысл вопроса, можно малось разъяснить?)

Добавлено через 1 минуту
C++
1
2
3
4
5
using std::string;
using std::map;
using std::cout;
using std::cin;
using std::endl;
первый раз сталкиваюсь с такой записью... как её понимать?
0
156 / 156 / 27
Регистрация: 29.03.2012
Сообщений: 418
22.04.2012, 23:31 6
Цитата Сообщение от BadRomance Посмотреть сообщение
Только вот после компиляции вот такие вот ошибки:
(в 16 и 17 строке)
invalid conversion from 'const char*' to 'int'
у вас в карте хранится пара string-int, а вы ему подсовываете char* вместо int.
может лучше так:
C++
1
a["Jacob"] = 15;
Добавлено через 4 минуты
C++
1
2
3
4
5
using std::string;
using std::map;
using std::cout;
using std::cin;
using std::endl;
это чтобы не подключать все пространство имен std.
1
0 / 0 / 0
Регистрация: 08.04.2012
Сообщений: 40
23.04.2012, 08:44  [ТС] 7
antoha398, спасибо!
0
Higher
1948 / 1214 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
23.04.2012, 10:07 8
Можно с помощью map свой переводчик сделать.
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
#include <iostream>
#include <sstream>
#include <map>
#include <boost/assign.hpp>
#include <locale>
 
typedef std::map< std::wstring, std::wstring > Map;
 
std::wstring translate( std::wstring src, Map & map )
{
    std::wstringstream sst(src);
    std::wstring res;
    for (std::wstring temp; sst >> temp; temp.empty() ? res : res += temp + L" ")
            temp = map.find(temp) == map.end() ? temp : map[temp];
    return res;
}
 
int main()
{
    using namespace boost::assign;
    
    std::locale::global( std::locale("") );
    
    Map words;
    
    insert (words)
    ( L"my",     L"мой"          )
    ( L"cat",    L"кот"              )    
    ( L"to",     L""                )
    ( L"has",    L""                )
    ( L"given",  L""                )
    ( L"four",   L"четырех"      )
    ( L"white",  L"белый"          )
    ( L"and",    L"и"              )
    ( L"one",    L"один"            )
    ( L"two",    L"два"              )
    ( L"black",  L"афроамериканец"    )
    ( L"birth",  L"родил"          )
    ( L"yellow", L"желтых"            )
    ( L"kittens",L"котят"          )
    ;
    
    std::wcout << translate(L"my cat has given birth to four kittens"
                            " : two yellow , one white and one black", words );
}
3
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.04.2012, 10:07

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

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

Разработка контейнера типа Карта (Map)
Приветсвую всех форумчан! Имеется задача разработать решение реализующее динамическую структуру...

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

Заполнение контейнера map объектами класса
Здравствуйте! Помогите разобраться с map. Не получается заполнить контейнер объектами класса....


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

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

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