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