Sissejuhatus:
Map ja unordered_map on mõlemad C++ standardmalliteegi (STL) assotsiatiivsed konteinerid, mis salvestavad võtmeväärtuse ja vastendatud väärtuse kombinatsioonist moodustatud elemente. Peamine erinevus nende kahe vahel seisneb selles, et kui kaart (nagu komplekt) rakendab isetasakaaluvat binaarset otsingupuud (BST) ja salvestab võtmed sorteeritud järjekorras, siis unordered_map (nagu unordered_set) kasutab sisemisel juurutamiseks räsi tabelit ja võtmeid ei järjestata. .
Probleemi lahendus:
C++-s programmeerimisel võib tõhusust oluliselt mõjutada otsustamine, millal kasutada kaarti või järjestamata kaarti. See otsus sõltub suuresti teie rakenduse spetsifikatsioonidest. Kui elementide järjestus on oluline, valige kaart. Kui aga soovite kiiremaid juurdepääsuaegu, on unordered_map õige tee.
Siin käsitletav kood näitab C++ kaardi ja unordered_map jõudluse erinevust:
#include
nimeruumi std kasutamine;
void perf_test()
{
kaart
tellimata_kaart
automaatne käivitamine = kõrge_resolutsiooniga_kell::now();
jaoks (int i = 0; i < 1e6; i++) Kaart[i] += i; auto stop = high_resolution_clock::now(); automaatne kestus = kestus_saade
cout << "Kaardi kulutatud aeg: "<< kestus.count() << " mikrosekundid" << endl; start = high_resolution_clock::now(); for (int i = 0; i < 1e6; i++) Järjestamata_kaart[i] += i; stop = high_resolution_clock::now(); kestus = kestus_saade
cout << "Unordered_Map kulunud aeg: "<< kestus.count() << " mikrosekundit" << endl; } int main() { perf_test(); tagasi 0; } [/code] See jõudluskatse näitab tavaliselt, et unordered_map on kiirem kui map.
Kaardi mõistmine C++ keeles
Kaart C++ STL-is on assotsiatiivne konteiner, mis salvestab võtmeväärtuse ja vastendatud väärtuse kombinatsioonist moodustatud elemente. Võtmeväärtused on sorteeritud, mis võimaldab üksuste hõlpsat otsimist, lisamist ja eemaldamist kaardilt. Kuna aga kaardi elemendid on järjestatud, on otsingu-, lisamis- ja kustutamistoimingute ajaline keerukus kaardi suuruses logaritmiline.
Eelnimetatud koodis loome kaardi nimega “Map” ja lisame elemendid tsükli abil ning ajastame toimingu, kasutades utiliiti high_resolution_clock.
Unordered_map keeles C++
Erinevalt kaardist teostab unordered_map konstantse ajaga otsinguid, sisestusi ja kustutamisi, olenemata kaardi suurusest. See saavutab selle muljetavaldava jõudluse, kasutades selle aluseks olevaks rakendamiseks räsitabelit.
Meie näitekoodis loome unordered_map nimega "Unordered_Map" ja nagu kaardi puhul, lisame elemendid tsükli abil ja ajastage toimingut. Enamasti kulub unordered_map operatsioonidele oluliselt vähem aega kui kaardiga tehtavatele.
Kaardi ja unordered_map erinevuste ja omaduste mõistmine C++-s võimaldab arendajatel kasutada oma tugevaid külgi ja luua tõhusaid rakendusi, mis on kohandatud antud probleemile.
raamatukogu
Oleme kasutanud pakutud koodi mõlemas jaotises map ja unordered_map