2016-06-11 1 views
0

Я хотел бы понять, как ключ в форме boost :: tuple просматривается на карте, где Compare=std::less. Например, это фрагмент кода я работаю над:Поиск карты с использованием boost :: tuple as key

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

В момент вставки значения в карте, давайте предположим, что s1 является abc и s2 является xyz. Во время поиска определяется, как определяется ключевое совпадение?

ли сравнение строк из s1 и s2 сделано с abc и xyz соответственно, в индивидуальном порядке? Если да, используются ли операторы сравнения std::string?

Спасибо!

ответ

0

Я написал код, чтобы проверить это. Тестирование показывает, что строки действительно сравниваются индивидуально с использованием определенных операторов сравнения.

Документ разговаривает по подобным же направлениям: http://en.cppreference.com/w/cpp/utility/tuple/operator_cmp