в каждой мапе есть поле AttributeID и мне надо проверить значение, я могу конечно пройти по каждому элементу вектора и потом обратиться через .at("AttributeID") но чет мне кажется что в стл есть какой - то алгоритм. Попробовал std::find() и std::for_each и компилятор ругается. Неужели нет способа через библиотечные методы поиска найти интересующее меня значение? Так работает
for(auto &element : vect)
{
if(element.at("AttributeID") == "0")
std::cout << "\nresult = " << element.at("AttributeID");
}
Так нет
std::find(vect.begin(), vect.end(),[](auto & element)
{});
Ну потому что во втором случае ты ищешь не в мапе, а мапы
замени find на find_if
Что значит "ПРОВЕРИТЬ ЗНАЧЕНИЕ" ? На что проверять?
В мапе ключ значение. Надо проверить, что это значение есть например "0" по ключу AttributeID
У тебя второй пример просто не до конца дописан, он должен BOOL возвращать. А он ничего не возвращает (VOID)
Второй из твоих примеров подойдёт.
Да, это косяк. Сделал в таком виде: std::find_if(std::begin(vect), std::end(vect), [](auto & element){ if(element.at("TBDAttributeID") == "0") { std::cout << "result = " << element.at("TBDAttributeID") << std::endl; return true; } else return false; });
Тебе бы также следовало бы добавить тут везде модификаторы CONST
Обсуждают сегодня