How can I get keys set from map or unordered_map in c++? [закрыт]

230
16 июля 2022, 00:50
Закрыт. Этот вопрос не по теме. Ответы на него в данный момент не принимаются.

Вопрос закрыт, так как на Stack Overflow на русском вопросы принято задавать только на русском языке. Пожалуйста, переведите ваш вопрос на русский язык или воспользуйтесь Stack Overflow на английском.

Закрыт 1 год назад.

Улучшить вопрос

I want to get all keys from a collection, is there a standard way to do this?

std::unordered_map<std::string, size_t> map;
auto keys = map.get_keys();
Answer 1

В С++20 есть такая возможность:

auto keys= map | std::views::keys; 

Для более старых версий стандарта, можно воспользоваться boost.

Однако, обращаю внимание, что keys - не самостоятельная коллекция, а адаптр к существующему map-у, и его содержимое будет меняться с изменением исходного контейнера, (итераторы будут инвалидироваться и т.д.):

std::unordered_map<int,int> map={{1,2},{3,4},{5,6}};
auto keys= map|boost::adaptors::map_keys;
map.erase(3);
for( auto i : keys )
    std::cout<< i << std::endl;
Answer 2

Вроде у map и unordered_map нету методов (по крайней мере в С++14, С++17), что бы сразу получить коллекцию ключей, можете попробовать сами через итерацию по парам ключ-значение:

std::vector<Key> keys;
keys.reserve(map.size());
std::vector<Val> vals;
vals.reserve(map.size());
for(auto kv : map) {
    keys.push_back(kv.first);
    vals.push_back(kv.second);  
} 
READ ALSO
Как получить HWND окна в котором рисует OpenGL?

Как получить HWND окна в котором рисует OpenGL?

Мне нужно получить HWND или ID потока окна текущего процесса (не моего, я делаю DLL инъекцию) в котором OpenGL производит отрисовку чтобы установить...

262
C++ Builder. Редактирование свойств формы

C++ Builder. Редактирование свойств формы

Всем доброго дня! Работаю в C++ builder 10 и создаю пустую форму, которая по-умолчанию наследуется от класса TFormСтолкнулся с проблемой, корень которой...

216
Вычитать сообщения из потока байт

Вычитать сообщения из потока байт

Иметься поток байт, те

160
Теорема о разделяющей оси на C++

Теорема о разделяющей оси на C++

Я пытаюсь реализовать обработку столкновений с помощью SAT, но в интернете встречается лишь теория о отрывки практикиУ меня появилось два...

295