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

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

Войти
Регистрация
Восстановить пароль
 
AnreyKazakov
Заблокирован
#1

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

28.09.2012, 12:02. Просмотров 390. Ответов 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++ при выходе из функции счетчик обнуляется
Функция создает объекты и указателями на них заполняет массив. При выходе из функции вызываются деструкторы объектов. Как сохранить объекты? C++
C++ Как работает функция insert(то есть что надо отправлять что бы строка s вставлялась в строку s1)?
C++ Как передать массив в функцию так, чтобы при выходе из функции он не изменялся?
C++ Error C3867 при вызове функции erase и insert для двумерного вектора
Односвязные списки: нужно ли при выходе из функции возвращать голову? C++
C++ Подскажите что значит insert, где найти синтаксис
C++ Выполенение функции при выходе из программы
C++ Что выполняет эта строка: res.insert?
C++ Нужна реализация функции std::vector::insert()
Что будет на выходе, не компилирует? C++
Нюансы синтаксиса: что означает запись po.npos; s.erase; s.insert ? C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Andsteadur
153 / 137 / 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 ?
Ответ Создать тему
Опции темы

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