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

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

2
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(){} Node(vector<int> v) { sort(v.begin(), v.end()); a = v[0]; b = v[1]; c = …

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

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

2
Оператор std :: unordered_map [] выполняет нулевую инициализацию для несуществующего ключа?
Согласно cppreference.com, std::map::operator[]для несуществующего значения выполняется нулевая инициализация. Однако на том же сайте не упоминается нулевая инициализация, за std::unordered_map::operator[]исключением того, что у него есть пример, который опирается на это. Конечно это просто ссылочный сайт, а не стандартный. Итак, приведенный ниже код в порядке или нет? #include &lt;unordered_map&gt; int main() { …

1
Утечка памяти во время исключения 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 &lt;iostream&gt; #include &lt;unordered_map&gt; int main() { try { struct MyComp { bool operator()(const std::string&amp;, const std::string&amp;) const { throw std::runtime_error("Nonono"); } }; std::unordered_map&lt;std::string, std::string, std::hash&lt;std::string&gt;, MyComp&gt; …
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.