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

Что на выходе у функции insert ? - C++

Восстановить пароль Регистрация
 
AnreyKazakov
Заблокирован
28.09.2012, 12:02     Что на выходе у функции insert ? #1
В учебнике предлагают такой способ подсчета слов одинаковых, !именно с пом итератора:

C++
1
2
3
4
5
map<string,int> m;
    while(cin>>str){
        pair<map<string,int>::iterator,bool> p=m.insert(make_pair(str,1));
        if(!p.second){++p.first->second;}
        }
Но, он мне не совсем понятен...
1. Каждый раз... объявляем пару (итератор карты, булевое значение). буль=0 я думаю в кажд итерации.
2. инициализируем пару "!" а вот тут не ясно... чем?
\\понятно что справа в карту вставляем элемент с ключем слова str и значением 1.
3. смотрим буль у пары, если 1, то увеличиваем, тут все ясно.

Вопрос только в одном что на выходе-то у m.insert(...) ?

почему компелятор меня материт, если я проверяю таким способом....
C++
1
if(!m.insert(make_pair(str,1))){...}
Попутно вопрос =) где сидит make_pair, в <map> или в <utility>?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.09.2012, 12:02     Что на выходе у функции insert ?
Посмотрите здесь:

C++ при выходе из функции счетчик обнуляется
1. Реализовать функции для вставки и удаления строк аналогичные процедурам Insert и Delete в Турбо-Паскале. C++
C++ Как работает функция insert(то есть что надо отправлять что бы строка s вставлялась в строку s1)?
C++ Как передать массив в функцию так, чтобы при выходе из функции он не изменялся?
C++ Error C3867 при вызове функции erase и insert для двумерного вектора
Односвязные списки: нужно ли при выходе из функции возвращать голову? C++
C++ Подскажите что значит insert, где найти синтаксис
C++ Выполенение функции при выходе из программы

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Andsteadur
152 / 136 / 3
Регистрация: 23.05.2009
Сообщений: 275
28.09.2012, 12:23     Что на выходе у функции insert ? #2
insert(x) возвращает std :: pair итератора и булевого типа. Итератор указывает на элемент map, который имеет ключ x->first. Булевый тип указывает был ли добавлен элемент x(true если добавлен)

make_pair находится в utility

Добавлено через 4 минуты
Цитата Сообщение от AnreyKazakov Посмотреть сообщение
почему компелятор меня материт, если я проверяю таким способом....
C++
1
if(!m.insert(make_pair(str,1))){...}
а почему бы ему не материть? insert вернул пару, а для нее не определен оператор !

Добавлено через 4 минуты
http://liveworkspace.org/code/c07b39...6c958f2ddea488
Yandex
Объявления
28.09.2012, 12:23     Что на выходе у функции insert ?
Ответ Создать тему
Опции темы

Текущее время: 05:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru