Std :: transform с лямбдой: пропустите несколько предметовC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Std :: transform с лямбдой: пропустите несколько предметов

Сообщение Anonymous »

У меня есть код C ++ 11, как < /p>

Код: Выделить всё

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 с функцией лямбда.  Моя проблема заключается в том, что иногда, как показано, я не хочу ничего возвращать из моей функции лямбды, то есть я в основном хочу пропустить, что я 
и перейти к следующему (не добавляя ничего на карту). < /p>

Есть ли способ достичь того, о чем я думаю? Я могу использовать импульс, если это помогает. Я хочу избежать решения, в котором я должен сделать предварительный процесс или постпроцесс на своем векторе, чтобы отфильтровать «плохие» элементы; Мне нужно только посмотреть на каждый элемент один раз. Кроме того, моя реальная логика немного сложнее, чем/else, как написано, поэтому я думаю, что было бы неплохо, если это возможно, было бы неплохо, если это возможно, то, что я пытаюсь достичь Невозможно с этой моделью). < /p>

Изменить: просто чтобы подчеркнуть, я хочу выполнить эту операцию (селективная обработка векторных элементов и вставка их в карту) наиболее эффективным способом, даже если это означает менее элегантное решение или большое переписывание. Я мог бы даже использовать другой тип данных карты в зависимости от того, что наиболее эффективно.

Подробнее здесь: https://stackoverflow.com/questions/390 ... some-items
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»