Код: Выделить всё
std::vector names;
std::map first_to_last_name_map;
std::transform(names.begin(), names.end(), std::inserter(first_to_last_name_map, first_to_last_name_map.begin()), [](const std::string& i){
if (i == "bad")
return std::pair("bad", "bad"); // Don't Want This
else
return std::pair(i.substr(0,5), i.substr(5,5));
});
< /code>
, где я преобразую вектор в карту, используя std :: transform с функцией лямбда. Моя проблема заключается в том, что иногда, как показано, я не хочу ничего возвращать из моей функции лямбды, то есть я в основном хочу пропустить, что я Есть ли способ достичь того, о чем я думаю? Я могу использовать импульс, если это помогает. Я хочу избежать решения, в котором я должен сделать предварительный процесс или постпроцесс на своем векторе, чтобы отфильтровать «плохие» элементы; Мне нужно только посмотреть на каждый элемент один раз. Кроме того, моя реальная логика немного сложнее, чем/else, как написано, поэтому я думаю, что было бы неплохо, если это возможно, было бы неплохо, если это возможно, то, что я пытаюсь достичь Невозможно с этой моделью). < /p>
Изменить: просто чтобы подчеркнуть, я хочу выполнить эту операцию (селективная обработка векторных элементов и вставка их в карту) наиболее эффективным способом, даже если это означает менее элегантное решение или большое переписывание. Я мог бы даже использовать другой тип данных карты в зависимости от того, что наиболее эффективно.
Подробнее здесь: https://stackoverflow.com/questions/390 ... some-items
Мобильная версия