2015-03-21 3 views
-4

у меня есть «массив» строк, определенных в качестве таковых:Тест C++, если карта существует элемент

typedef map<int, string> strArr; 

Всякий раз, когда я делаю это:

strArr args; 
if(!args[1]) { /*do stuff*/ } 

Компилятор говорит мне, что есть no match for 'operator!' Почему это так, и как я могу это исправить?

EDIT: Есть ли способ сделать эту работу с bool operator!()!

+4

Это так, потому что вы не смогли прочитать какую-либо документацию, вместо того, чтобы выбрать, чтобы случайно угадать! –

ответ

5

С !args[1], вы пытаетесь вызвать operator! на std::string, и в самом деле, сообщение об ошибке прав: std::string не имеет operator! ,

Чтобы проверить, существует ли элемент в std::map, используйте find. Она возвращает std::map::end, если указанный ключ не в карте:

if (args.find(1) == args.end()) { ... } 
+0

Тогда как это исправить ...? –

+0

@LeeYi Проверьте мое редактирование. – emlai

+1

@ LeeYi: Что мешает вам просто читать документацию? –

Смежные вопросы