Вопросы с тегом «unordered-map»

371
Есть ли преимущество использования map перед unordered_map в случае тривиальных ключей?

Недавний разговор о unordered_mapC ++ заставил меня понять, что я должен использовать unordered_mapв большинстве случаев, где я использовал mapраньше, из-за эффективности поиска ( амортизированный O (1) против O (log n) ). В большинстве случаев я использую карту, я использую intили std::stringкак...

286
C ++ unordered_map с использованием пользовательского типа класса в качестве ключа

Я пытаюсь использовать пользовательский класс в качестве ключа для unordered_map, как показано ниже: #include <iostream> #include <algorithm> #include <unordered_map> using namespace std; class node; class Solution; class Node { public: int a; int b; int c; Node(){}...

101
Как специализировать std :: hash <Key> :: operator () для пользовательского типа в неупорядоченных контейнерах?

Для поддержки ключевых типов , определяемых пользователем в std::unordered_set<Key>и std::unordered_map<Key, Value> один должен обеспечивать operator==(Key, Key)и хэш - функтор: struct X { int id; /* ... */ }; bool operator==(X a, X b) { return a.id == b.id; } struct MyHash { size_t...

84
Как выбрать между картой и unordered_map?

Предположим, я хотел сопоставить данные со строкой в ​​качестве ключа. Какой контейнер выбрать, mapили unordered_map? unordered_mapзанимает больше памяти, поэтому предположим, что память не является проблемой, а проблема заключается в скорости. unordered_mapобычно должен давать среднюю сложность O...

25
Оператор std :: unordered_map [] выполняет нулевую инициализацию для несуществующего ключа?

Согласно cppreference.com, std::map::operator[]для несуществующего значения выполняется нулевая инициализация. Однако на том же сайте не упоминается нулевая инициализация, за std::unordered_map::operator[]исключением того, что у него есть пример, который опирается на это. Конечно это просто...

10
Утечка памяти во время исключения unordered_map :: insert KeyEqual с GCC - нарушение строгой гарантии безопасности исключения?

Я использую GCC 7.3.1, но также протестирован на coliru, который я считаю версией 9.2.0. Сборка со следующим: g++ -fsanitize=address -fno-omit-frame-pointer rai.cpp Вот rai.cpp: #include <iostream> #include <unordered_map> int main() { try { struct MyComp { bool operator()(const...