map library (tsz. map libraries)
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 = "egy";
myMap = "kettő";
std::cout << myMap << std::endl; // egy
}
A map
automatikusan rendezi az elemeket a kulcsok alapján.
insert
, operator
)Elemeket kétféleképpen adhatunk hozzá:
myMap.insert({3, "három"});
myMap = "négy";
Az operator
létrehozza az elemet, ha a kulcs még nem létezik.
A map
iterálható egy egyszerű ciklussal:
for (const auto& pair : myMap) {
std::cout << pair.first << ": " << pair.second << std::endl;
}
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;
}
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);
}
std::cout << "Méret: " << myMap.size() << std::endl;
if (myMap.empty()) {
std::cout << "A map üres." << std::endl;
}
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 = "Pont1";
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"});
multimap
-ot.std::unordered_map
jobb választás lehet.