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

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

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

Ассоциативный контейнер типа map - C++

18.09.2011, 17:46. Просмотров 3017. Ответов 10
Метки нет (Все метки)

Привет! Помогите пожалуйста найти ошибку. Программа с Ассоциативным контейнером типа map<string, int>. Прога подсчитывает колличество введёных слов. Ввожу в карту слова-ключи, если слово повторяется , то счётчик увеличивается (счётчик - это значение типа int в моей карте). И в конце выводит все ключи и значения на экран. Компилятор MV C++ 6.0 Вот прога:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <vector>
#include <string>
#include <map>
 
using namespace std;
int main ()
{
    map <string, int> word_count;
    string word;
    while (cin>>word)
        ++word_count[word];
 
    map <string, int>::iteratormap_it = word_count.begin();
    cout<< map_it->first>>endl;
    cout<< map_it->second>>endl;
 
system("pause");
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.09.2011, 17:46     Ассоциативный контейнер типа map
Посмотрите здесь:

Передача в контейнер map пользовательского типа данных - C++
Доброго времени суток, дамы и господа. Интересует такая задачка: создать контейнер типа map, который будет хранить пользовательский тип...

Ассоциативный контейнер и шаблонный класс - C++
Помогите пожалуйста исправить и дополнить код. Задание: Автоматизированная информационная система на железнодорожном вокзале содержит...

ассоциативный массив map c двумерным массивом - C++
Искал информацию в интернете но безрезультатно. Необходимо сделать ассоциативный массив с со строковым ключом и двумерным массивом 3х3 в...

Какой ассоциативный контейнер выбрать? И как реализовать в нем чтение из файла? - C++
Вот сама задание: Текстовый файл содержит следующую информацию: координату точки и угол наклона прямой, проходящей через эту точку....

ассоциативный массив MAP хранящий указатели на векторы определенной структуры - C++
вопрос: Если я создаю вектор, наполняю его данными и записываю указатель на него в MAP ,след шагом очищаю его. Я смогу обращаться к данному...

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

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
18.09.2011, 18:08     Ассоциативный контейнер типа map #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
#include <algorithm>
#include <iostream>
#include <cstdlib>
#include <string>
#include <map>
 
template< class Key, class Val >
struct print_pair {
    std::ostream& ost;
    
    print_pair(std::ostream& os) : ost(os) {}
 
    void operator () (const std::pair<Key, Val>& p)
    {
        ost << p.first << ": " << p.second << '\n';
    }
};
 
int main ()
{
    std::map< std::string, int > word_count;
    std::string word;
 
    while (std::cin >> word)
        ++word_count[word];
 
    std::for_each(word_count.begin()
                  , word_count.end()
                  , print_pair< std::string, int >(std::cout)
    );
    system("pause");
    return 0;
}
Romiys
3 / 3 / 0
Регистрация: 27.12.2010
Сообщений: 56
18.09.2011, 22:27  [ТС]     Ассоциативный контейнер типа map #3
Спасибо! Ваша программа в отличие от моей откомпилировалась. Но она существенно сложнее для понимания новичку. Вы можете её прокомментировать. Я многих вещей не понимаю, особенно в начале кода
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
18.09.2011, 22:48     Ассоциативный контейнер типа map #4
новичкам негоже делать такое задание через std::map
sandye51
программист С++
682 / 584 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
18.09.2011, 23:41     Ассоциативный контейнер типа map #5
Romiys, ваша прога почти правильно работала
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <string>
#include <map>
 
int main ()
{
    std::map<std::string, int> word_count;
    std::string word;
    while (std::cin >> word)
        ++word_count[word];
 
    for (auto i = word_count.begin(), end = word_count.end(); i != end; ++i)
        std::cout << i->first << " : " << i->second << std::endl;
 
    system("Pause");        
    return 0;
}
чуть подправил

Jupiter, раз уж по трушному делать через функциональный объект, то надо от
C++
1
 std::unary_function<std::pair<Key, Val>, void>
наследовать по правилам)
Romiys
3 / 3 / 0
Регистрация: 27.12.2010
Сообщений: 56
19.09.2011, 11:03  [ТС]     Ассоциативный контейнер типа map #6
Sandye51, спасибо Вам за ответ. Вечером домой приеду - прокомпилирую моя прога не компилировалась потому, что я в цыкле не написал "auto"?


Ответ для Jupiter : Вы говорите, что новичкам не гоже делать такое затание через std::map . Не понимаю почему? Моя главная задача не именно эту программу написать, а изучит и понять как работает на практике ассоциативный контейнер. Мне кажеться, что эта задача очень подходит для такой цели
LosAngeles
Заблокирован
19.09.2011, 11:26     Ассоциативный контейнер типа map #7
Romiys, учитывая
Цитата Сообщение от Romiys Посмотреть сообщение
Компилятор MV C++ 6.0
вариант сэнди можешь даже не пробовать
Romiys
3 / 3 / 0
Регистрация: 27.12.2010
Сообщений: 56
19.09.2011, 14:38  [ТС]     Ассоциативный контейнер типа map #8
Почему???
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
19.09.2011, 14:51     Ассоциативный контейнер типа map #9
Romiys, Старый компилятор. А в коде используется стандарт С++11.
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1286 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
19.09.2011, 15:30     Ассоциативный контейнер типа map #10
Цитата Сообщение от Romiys Посмотреть сообщение
Почему???
Замени auto на std::map<std::string, int>::const_iterator и можешь пробовать.

Добавлено через 1 минуту
Цитата Сообщение от Romiys Посмотреть сообщение
моя прога не компилировалась потому, что я в цыкле не написал "auto"?
Нет. Потому что написал map <string, int>::iteratormap_it.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.09.2011, 22:33     Ассоциативный контейнер типа map
Еще ссылки по теме:

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

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

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

Чтение из файла в контейнер map - C++
Вот есть структура struct Kino { int numb ; //номер кинотеатра string name; //название ктра vector&lt;string&gt; sv; //список...

Контейнер map, с двумя ключами? - C++
Добрый день всем! Всех с наступающим! Интересует такой вопрос , имеется ли в STL или Boost, контейнер аналогичный map, только с двумя...


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

Или воспользуйтесь поиском по форуму:
Romiys
3 / 3 / 0
Регистрация: 27.12.2010
Сообщений: 56
19.09.2011, 22:33  [ТС]     Ассоциативный контейнер типа map #11
УРААА! Работает! Всем спасибо! Заработало! И написано понятно.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <string>
#include <map>
 
int main ()
{
        std::map<std::string, int> word_count;
        std::string word;
        while (std::cin >> word)
                ++word_count[word];
 
        for (std::map<std::string, int>::const_iterator i = word_count.begin(), end = word_count.end(); i != end; ++i)
                std::cout << i->first << " : " << i->second << std::endl;
 
        system("Pause");        
        return 0;
}
P.S. А я ведь и не знал совсем, что VC++ 6.0 - это старый компилятор и тем более не догадывался, что прога написана на стандарте С++ 11
Yandex
Объявления
19.09.2011, 22:33     Ассоциативный контейнер типа map
Ответ Создать тему
Опции темы

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