Bimap-a mapuje jeden klucz na drugi. W mapach klucze muszą być niepowtarzalne, bimapach każdy występujący w nich klucz i wartość musi być niepowtarzalny (wartość też jest kluczem).
#include <iostream> #include <boost/bimap.hpp> #include <boost/assign/list_of.hpp> #include <boost/foreach.hpp> using namespace std; template <typename T> void show(T m) { for (typename T::iterator it = m.begin(); it != m.end(); ++it) cout << "BiMap[" << it->first << "] = " << it->second << endl; } int main() { typedef boost::bimap<int, string> BMap; BMap bm = boost::assign::list_of<BMap::relation>(1, "aaa") (1, "zzz") (2, "bbb") (3, "ccc") (4, "aaa"); show(bm.left); show(bm.right); return 0; }W przykładzie nie możemy do bimapy wprowadzić nowych kluczy bo już wcześniej zastały wstawione.
Linijka 19 - istnieje już klucz 1 (linijka 18)
Linijka 22 - istnieje już klucz "aaa" (linijka 18)
Aby wyszukać odpowiednią wartość, musimy wiedzieć co w danej chwili jest kluczem. W tym celu należy skorzystać z obiektów "left" (klucz1 -> klucz2) lub "right" (klucz2 -> klucz1).
Wyniki:
BiMap[1] = aaa BiMap[2] = bbb BiMap[3] = ccc BiMap[aaa] = 1 BiMap[bbb] = 2 BiMap[ccc] = 3
Brak komentarzy:
Prześlij komentarz