0

文字列のペアがたくさんあり、これらのペア内の文字列を互いにマップする良い方法を探しています。str1str2
のペア がある場合、 str1にはstr2を、 str2にはstr1を返す必要があるとします。 私はこれに地図を使用できることを知っています

map<string, string>

しかし、単純に std::map を使用すると、各文字列をキーと値として 2 回保存する必要があります。
重複を避けるための最適なソリューションはどれですか? これに最適化された特別なコンテナはありますか?

4

1 に答える 1

2

を使用しboost::bidirectional_mapます。http://www.boost.org/doc/libs/1_52_0/libs/bimap/doc/html/index.html

簡単な例

#include <boost/bimap/bimap.hpp>
#include <string>
#include <iostream>

int main()
{
   namespace bi = boost::bimaps;
   typedef bi::bimap<std::string, std::string> bimap;

   bimap map;
   map.insert(bimap::value_type("1", "2"));
   std::cout << map.left.at("1") << std::endl;
   std::cout << map.right.at("2") << std::endl;
}

http://liveworkspace.org/code/jitNY$0

于 2013-02-27T10:14:44.330 に答える