Sobes.tech
Middle

Kā ir strukturēts std::map konteineris C++-ā?

sobes.tech AI

Atbilde no AI

std::map C++ ir ir asocitatīvs konteineris, kas glabā pārus atslēga-vērtība, kārtojot tos pēc atslēgas. Iekšēji tas parasti tiek realizēts kā līdzsvarots binārais koks (piemēram, sarkans-melns koks), kas nodrošina piekļuves, ievietošanas un dzēšanas laiku logaritmiskā skalā.

Galvenās īpašības:

  • Atslēgas ir unikālas.
  • Elementi ir kārtoti pēc atslēgas, izmantojot salīdzinātāju (pēc noklusējuma std::less<Key>).
  • Tas glabā elementus koka mezglos, katrs mezgls satur pāri std::pair<const Key, T>.

Piemērs lietošanai:

#include <map>
#include <iostream>

int main() {
    std::map<int, std::string> m;
    m[10] = "ten";
    m[5] = "five";
    m[20] = "twenty";

    for (const auto& [key, value] : m) {
        std::cout << key << ": " << value << '\n';
    }
    return 0;
}

Šajā piemērā elementi tiks izvadīti pēc atslēgas kārtības: 5, 10, 20.

Atmiņa tiek dinamiski piešķirta koka mezgliem, un atmiņas pārvaldība notiek konteinerā. Izņemot elementus vai iznīcinot konteineru, atmiņa tiek automātiski atbrīvota.