std :: multimap comes to mind ... Basically this is a map, but allows duplicating maps in a key (i.e. you can have several "A" keys, each of which is displayed on "B", "C" or "D "to continue your example).
: : multimap , , - std::pair, , insert, multimap:
std::multimap<char, char> myMap;
myMap.insert(std::pair<char, char>('A', 'B'));
myMap.insert(std::pair<char, char>('A', 'C'));
myMap.insert(std::pair<char, char>('A', 'D'));
myMap.insert(std::pair<char, char>('B', 'C'));
, , A, B, C .. stand-ins - . stand-ins, .
multimap "A" :
typedef std::multimap<char, char>::iterator mmIter;
std::pair<mmIter, mmIter> iters = myMap.equal_range('A');
for (mmIter iter = iters.first ; iter != iters.second; ++iter)
{
cout << " " << (*iter).second;
}
multimap.equal_range pair, , , , , . , , .
EDIT 2 , . Multimap (.. , ), - . , , .
, Boost, ( - ) t Boost, , - ).