Всем привет, вот есть фрагмент кода, в котором идёт проверка на находимость в мапе похожего ключа, если тип нашёл то возвращает минус 1, не нашёл 1. Мб я чёт не правильно догоняю. Но функция find возвращает итератор. Вылетает в этом коде.
auto search = TableCarryGroup.find(CALLSIGN);
if((*search).first == CALLSIGN){
return 1;
} else
return -1;
Когда элемент не найден, то возвращается итератор на элемент после конца. Обращение к данным через такой итератор недопустимо (поэтому вылетает).
Правильно было бы сделать так:
if(TableCarryGroup.find(CALLSIGN) != TableCarryGroup.end())
return 1;
else
return -1;
Вообще, если у вас есть некий код, который ищет значение в мапе а потом использует его, то правильный паттерн:
auto iter = map.find(key);
if(iter != map.end())
{
// Используем данные
}
else
{
// Вариант когда элемент не найден. Обращяться к данным через итератор нельзя.
}
Если нужна ТОЛЬКО проверка, можно использовать функцию count()
- вернет 0, если элемента нет. Работает в map, set
.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Располагаю элементы в своём приложении с QGridLayout
Можно ли с помощью DCE/RPC узнать нужные переменные окружения или пути к системных папкам, таким как c:program file или home user directory?