Здравствуйте! 20 баллов. Кто знает С++? Не понимаю, расскажите, пожалуйста, как ввести...

0 голосов
49 просмотров

Здравствуйте! 20 баллов. Кто знает С++? Не понимаю, расскажите, пожалуйста, как ввести словарь в С++? Библиотека map. Для меня важно ввод строк в словаре, где одна превращается в first, а другая в second (в пару множества).


Информатика (432 баллов) | 49 просмотров
0

Вам нужно сохранять всю строку или только слово?

0

слово

Дан 1 ответ
0 голосов

Для ввода используем std::cin >> first >> second и заодно проверяем успешен ли ввод. Если да, то сохраняем пару в dict. На этапе компиляции auto p превращается во что-то вроде std::pair, откуда мы получаем доступ через члены first и second (для первого и второго элемента соответственно)


image
(4.7k баллов)
0

Для начала уточню, почему не мультимапа? Слово может иметь к примеру несколько переводов, это стоило бы спросить у хозяина вопроса... Продолжая это действо, нужно было уточнить, что делать если уже существует такой елемент в мапе.

0

dict[key] = val для заполнения массива это откровенный Python или Js стиль. Это работает только по тому, что при отсутствии найденного елемента map будет конструировать пустой, который и будет вами зааплаен значением. Это не правильный подход для работы с мапой, по тому, что не дает вам четкого понимания, был ли уже создан данный елемент и вы его перезаписываете или же вы просто создаете новый.

0

Для корректной работы используйте insert, именно его для вас сделали. К слову говоря, работать он будет быстрее как минимум по тому, что default значение объекта создаваться не будет, а будет копироваться просто из значение переданного в insert.Так что то что вы написали откровенно тормозит код.

0

auto это тот же шаблон. А шаблон обрабатывается не на этапе компиляции, а на этапе препроцессора, если вам будет так угодно. Так что не вводите в заблуждение или хотя бы не в такое откровенное (:

0

Ах да, мы получаем не "что-то вроде" а тип которым является елемент коллекции.