и отфильтровать их по определенному условию?
Вот что хочу получить примерно
auto not_in_storage_keys =
keys | std::views::filter([this](const Key& key) { return !Has(key); })
| std::views::unique_by_hash; // ??
Или же это можно сделать только ручками, например вот так
std::unordered_set<Key> unique_keys;
std::vector<Key> keys_to_process;
for (const auto& key : keys) {
if (!unique_keys.contains(key) && !Has(key)) {
keys_to_process.push_back(key);
unique_keys.emplace(key);
}
}
std::ranges::unique. Он умеет принимать компаратор
Разве std::ranges::unique не для групп одинаковых элементов? Eliminates all except the first element from every consecutive group of equivalent elements from the range * уточнение: входная последовательность не будет отсортирована
Если тебе нужен std::views::unique такой, что тебе не пришлось бы сортировать, то такого нет. В ranges-v3 есть unique view, но он также просит на вход сортированное.
Обсуждают сегодня