Удаление дубликатов в отсортированном Vector с условием С++
У меня есть вектор структур. Я хочу убрать дубликаты структур из этого вектора но убрать только те структуры у которых index != "H". Для удаления дубликатов использую bool operator. А вот по условию index != "H" не знаю как сделать. Подскажите пожалуста.
typedef struct aspect {
string index;
string type;
string drob;
double d_aspect;
string s_aspect;
}asp;
bool operator==(const asp& a, const asp& b)
{
return a.d_aspect == b.d_aspect;
}
sort(aspectFile.begin(), aspectFile.end(), cmp);
aspectFile.resize(unique(aspectFile.begin(), aspectFile.end()) - aspectFile.begin());
Ответы (1 шт):
Автор решения: Chorkov
→ Ссылка
используйте remove_if
bool is_H(const asp& a) { return a.index=="H"; } // условие удаления
aspectFile.erase( std::remove_if( aspectFile.begin(), aspectFile.end() ), aspectFile.end() );
Список стандартных алгоритмов (функций работающих с итераторами): https://ru.cppreference.com/w/cpp/algorithm