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

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

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

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

28.09.2012, 12:02. Просмотров 408. Ответов 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++
#include &lt;stdio.h&gt; void p(int x) { if(x) { p(x-1); printf(&quot;x=%d\n&quot;,x); }) void main() { p(4); ...

при выходе из функции счетчик обнуляется - C++
Добрый день всем. Есть такой кусок кода: int count1=1; int count2=10; ForwardLabeling_0(imageBin, imageLabel, k); ...

Выполенение функции при выходе из программы - C++
Есть ли в с++ (консольное приложение ) какой нибудь метод который бы выполнялся после нажатия грубо &quot;Крестика&quot; т.е выход из программы . У...

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

Как передать массив в функцию так, чтобы при выходе из функции он не изменялся? - C++
Задачка: есть строка, которая состоит из символов. Символы соединяються в слова, которые оттделены друг от друга одним или несколькими...

Что выполняет эта строка: res.insert? - C++
res.insert(res.begin(), ((Number &gt;&gt; i) &amp; 0x01) + 48); Добавлено через 53 секунды мне не понятны функции опишите что к чему

Нужна реализация функции std::vector::insert() - C++
Нужна реализация функции std::vector::insert() 1)iterator insert (iterator position, const value_type&amp; val); 2) void insert (iterator...

Подскажите что значит insert, где найти синтаксис - C++
Подскажите что значит insert, где найти синтаксис text.insert(text.size(),line); //добавить строку ...

Нюансы синтаксиса: что означает запись po.npos; s.erase; s.insert ? - C++
Что в контексте этого кода значат po.npos; s.erase; s.insert ? if(po!=std::string::npos) { s.erase(po,s1.length()); ...

Error C3867 при вызове функции erase и insert для двумерного вектора - C++
Тренируюсь с использованием контейнера std::vector. Появляется ошибка при удалении и вставке, помогите понять почему и как её исправить.......

1. Реализовать функции для вставки и удаления строк аналогичные процедурам Insert и Delete в Турбо-Паскале. - C++
Реализовать функции для вставки и удаления строк аналогичные процедурам Insert и Delete в Турбо-Паскале. Помогите,пожалуйста,завтра нужно...

ввод a b c на выходе c b a - C++
#include &lt;iostream&gt; #include &lt;string&gt; #include &lt;iterator&gt; #include &lt;algorithm&gt; int main() { std::string a; ...


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

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

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