map library
Megjelenés
Főnév
map library (tsz. map libraries)
- (informatika) A map egy asszociatív tároló a C++ Standard Library-ben (STL), amely kulcs-érték párokat tárol. Az adatok egy bináris keresőfa (általában vörös-fekete fa) segítségével kerülnek rendezésre és gyorsan elérhetők.
1. Alapok
A std::map a <map> fejlécegységben található, és a következőképpen hozhatunk létre egy példányt:
#include <iostream>
#include <map>
int main() {
std::map<int, std::string> myMap;
myMap[1] = "egy";
myMap[2] = "kettő";
std::cout << myMap[1] << std::endl; // egy
}
A map automatikusan rendezi az elemeket a kulcsok alapján.
2. Beszúrás (insert, operator[])
Elemeket kétféleképpen adhatunk hozzá:
myMap.insert({3, "három"});
myMap[4] = "négy";
Az operator[] létrehozza az elemet, ha a kulcs még nem létezik.
3. Iterálás
A map iterálható egy egyszerű ciklussal:
for (const auto& pair : myMap) {
std::cout << pair.first << ": " << pair.second << std::endl;
}
4. Keresés (find, count)
Elem keresése:
auto it = myMap.find(2);
if (it != myMap.end()) {
std::cout << "Megtalálva: " << it->second << std::endl;
}
A count(kulcs) megmondja, hogy az adott kulcs létezik-e:
if (myMap.count(3)) {
std::cout << "A 3-as kulcs létezik." << std::endl;
}
5. Törlés (erase)
Elem eltávolítása kulcs alapján:
myMap.erase(2);
Vagy iterátor segítségével:
auto it = myMap.find(1);
if (it != myMap.end()) {
myMap.erase(it);
}
6. Méret és üresség ellenőrzése
std::cout << "Méret: " << myMap.size() << std::endl;
if (myMap.empty()) {
std::cout << "A map üres." << std::endl;
}
7. Egyéni kulcs-típusok
Ha saját típusunkat használjuk kulcsként, biztosítani kell az operator< túlterhelését:
struct Point {
int x, y;
bool operator<(const Point& other) const {
return x < other.x || (x == other.x && y < other.y);
}
};
std::map<Point, std::string> pointMap;
pointMap[{1, 2}] = "Pont1";
8. Több érték (multimap)
Ha egy kulcs több értéket is tarthat, használhatjuk a std::multimap-ot:
std::multimap<int, std::string> multi;
multi.insert({1, "első"});
multi.insert({1, "második"});
9. Összegzés
- Gyors keresés: O(log n) időben működik.
- Rendezett tárolás: A kulcsok automatikusan rendezve vannak.
- Nem tartalmaz duplikált kulcsokat, ha duplikáció szükséges, használjuk a
multimap-ot. - Alternatíva: Ha nincs szükség rendezésre, hanem gyors keresés kell, a
std::unordered_mapjobb választás lehet.
- map library - Szótár.net (en-hu)
- map library - Sztaki (en-hu)
- map library - Merriam–Webster
- map library - Cambridge
- map library - WordNet
- map library - Яндекс (en-ru)
- map library - Google (en-hu)
- map library - Wikidata
- map library - Wikipédia (angol)