cpp-ru / ideas

Идеи по улучшению языка C++ для обсуждения
https://cpp-ru.github.io/proposals
Creative Commons Zero v1.0 Universal
90 stars 0 forks source link

Шаблонный erase для ассоциативных контейнеров #119

Closed Neargye closed 2 years ago

Neargye commented 3 years ago

Перенос предложения: голоса +2, -2 Автор идеи: Yaroslav Shchukin

условный std::set::contains добавили , а про template<class K> iterator erase(const K& x) забыли

template<class K> iterator erase(const K& x) добавить, чтобыstd::less<> использовать

Neargye commented 3 years ago

maxon 13 августа 2019, 20:08 А можно пример? Где именно здесь должен быть использован другой less<>? Также непонятно, что тут за K. Если K приводимо к key_type, то неясно зачем шаблон. Если неприводимо, то вообще неясно что этот метод должен делать.

apolukhin commented 3 years ago

Речь идёт про добавление гетерогенного erase в контейнеры, чтобы иметь возможность удалять из контейнера по ключу другого типа.

Например, чтобы из std::set<std::string> v; можно было удалить элемент через v.erase("A long key to remove from container") без создания std::string и динамической аллокации

apolukhin commented 3 years ago

Ребята из Интела написали предложение https://wg21.link/p2077 . Молодцы!

apolukhin commented 3 years ago

Ребята из Интела продолжают жечь https://wg21.link/p2363 - добавляют оставшиеся недостающие гетерогенные перегрузки

apolukhin commented 2 years ago

https://wg21.link/p2077 приняли в C++23