2017-02-20 39 views
-2

enter image description hereО мультимаге, какое из следующего может быть скомпилировано успешно?

Ответ первый, но я не знаю почему. Кто-нибудь может анализировать каждый из них?

+1

Что значит, вы не знаете почему? Знаете ли вы, что означает 'multimap '? Теперь замените 'K' и' T' ... –

+0

@KerrekSB, я знаю, что k является ключевым, а T является значением. Но первый из них не является полным, он не дает значения, а непосредственно дает операцию сравнения. – user7487638

+0

Глубокий вдох, ясный ум: 'K = строка',' T = больше '... –

ответ

1

Проблема с третьим примером является то, что мы пытаемся вставить не пару, которая должна быть объектом inserted.Correct способ сделать это может быть:

multimap<string, double> mp2; 
mp2.insert({"ok", 3.14}); 

Второй неправильно becuse ключ имеет тип string, а третий параметр - компаратор, для int.

Первый синтаксически правильный и будет скомпилирован успешно, хотя он довольно странный.

+0

Спасибо за ваш ответ. Это действительно полезно. Но одно не ясное. Первый из них не является полным, он не дает значения, а дает ключ, а затем прямо дает операцию сравнения. это правильно? – user7487638

+0

как @KerrekSB, здесь мы имеем 'value = std :: больше ', и где в этом примере нет операции сравнения, потому что у него есть только два аргумента: первый: 'key', а второй:' value' , – zovube

+0

Хорошо, это выглядит странно. Спасибо! – user7487638