Запитання з тегом «unordered-map»

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

2
C ++ unororder_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 = v[2]; } bool …

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); …

4
Як вибрати між картою та unordered_map?
Припустимо, я хотів зіставити дані із рядком як ключем. Який контейнер я повинен був вибрати, mapабо unordered_map? unordered_mapзаймає більше пам’яті, тож припустимо, пам’ять не є проблемою, а проблема полягає в швидкості. unordered_mapяк правило, повинні давати середню складність O (1) з найгіршим випадком O (n). У яких випадках воно потрапляло б …

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

1
Витік пам’яті під час unorряд_map :: вставити виняток 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, …
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.