Общая обертка для вектора C ++ Операций структуры: удаление, find_if и т. Д.C++

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

Сообщение Anonymous »

Я использую C ++ 14. Я ненавижу векторные операции C ++ стирания и удалить (которые являются словесными и запутанными) и хочу написать простую общую обертку, чтобы удалить элемент из вектора struct s, если значение этого элемента соответствует предоставленной.

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

std::vector selections = ...;
selections.erase(
std::remove_if(
selections.begin(), selections.end(),
[](MYSTRUCT item) { return item.text == L".."; }), selections.end());
< /code>
Я новичок в C ++ и не знаю много о его параметрах Lambda или о том, как использовать дженерики, но моя цель - что -то упрощенное и в большей степени в соответствии с Java, например, < /p>
// Pseudo-code
removeElement(selections, { item.text == L".." });
это возможно, по крайней мере, в какой -то степени?
У меня есть аналогичные жалобы на find_if . Мне не нравится делать следующее, чтобы найти элемент по значению, < /p>

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

    auto iter = std::find_if(driveItems.begin(), driveItems.end(),
[&](const MYSTRUCT& elem) { return elem.path == path;});
if (iter != driveItems.end()) {
return *iter;
}
< /code>
В конечном итоге я хочу иметь однострочную обертку A La Java, которая избегает типов итераторов и всего этого синтаксиса и просто делает < /p>
   findElement(driveItems, { return elem.path == path; });
Любые предложения оценены!

Подробнее здесь: https://stackoverflow.com/questions/797 ... ind-if-etc
Ответить

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

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

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

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

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