0

boost::tuple の形式のキーがマップでどのように検索されるかを理解したいと思いますCompare=std::less。たとえば、これは私が取り組んでいるコードのスニペットです。

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));
    ...
    ...
}

マップに値を挿入するときに、s1isabcs2isとしxyzます。ルックアップ中に、キーの一致はどのように決定されますか?

と の文字列比較はs1、と でそれぞれ個別にs2行われますか? その場合、比較演算子は使用されていますか?abcxyzstd::string

ありがとう!

4

1 に答える 1

0

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

ドキュメントは同様の行で話します: http://en.cppreference.com/w/cpp/utility/tuple/operator_cmp

于 2016-06-30T13:12:49.967 に答える