Выглядит очень простой случай, типичное использование std :: find
for ( auto element : generic->vec() )
LOG << element;
LOG << channel;
if ( !gen->vec().empty() ) {
if(std::find(generic->vec().begin(), generic->vec().end(), channel) != generic->vec().end()){
LOG << "Found";
;// Found the item
} else {
LOG << "Not Found";
return false;
}
}
Пожалуйста, проверьте файл журнала
2018-11-08, 09:37:18 [INFO] - [140455150589696] - 1
2018-11-08, 09:37:18 [INFO] - [140455150589696] - 2
2018-11-08, 09:37:18 [INFO] - [140455150589696] - 4
2018-11-08, 09:37:18 [INFO] - [140455150589696] - 12
2018-11-08, 09:37:18 [INFO] - [140455150589696] - 40
2018-11-08, 09:37:18 [INFO] - [140455150589696] - Found
Вектор содержит 1,2,4,12, и входящее значение, которое мы хотим проверить, принадлежит ли оно к вектору, равно 40. std :: find возвращает true, что оно найдено.
Метод vec () возвращает массив элементов uint64_t:
std::vector<uint64_t> vec() const {
return vec_;
}
Когда я создаю локальный вектор, т.е.
auto tmp = generic-> vec (),
код работает.
Где ошибка в моем коде? Я ожидаю получить «Не найдено» при проверке, принадлежит ли 40 [1,2,4,12].