2016-06-11 13 views
0

boost :: tupleの形式のキーがマップ内でどのように検索されているかを知りたい場合は、Compare=std::lessです。例えば、これは私が働いているコードの抜粋です:boost :: tupleをキーとして使用したマップ検索

typedef boost::tuple<std::string, std::string> Key; 
void *Data; 

typedef std::map<Key, Data> FileDataMap; 
FileDataMap file_map; 

lookup_data(std::string s1, std::string s2) 
{ 
    ... 
    fk = boost::make_tuple(s1, s2); 

    FileDataMap::iterator itr = file_map.find(fk); 
    ... 
    ... 
} 

insert_data(std::string s1, std::string s2, void *fdata) 
{ 
    ... 
    fk = boost::make_tuple(s1, s2); 
    file_map.insert(std::make_pair(fk, fdata)); 
    ... 
    ... 
} 

マップに値を挿入する時には、のは、s1abcs2xyzであると仮定してみましょう。ルックアップ中に、どのようにキーの一致が決定されますか?

s1s2の文字列比較はそれぞれabcxyzで行われますか?その場合は、std::string比較演算子が使用されていますか?

ありがとうございます!

答えて

0

私はこれをテストするコードを書いています。テストは、定義された比較演算子を使用して文字列が実際に個別に比較されることを示します。

この文書では、同様の行で説明しています。 http://en.cppreference.com/w/cpp/utility/tuple/operator_cmp

関連する問題