Язык программирования C++. Вводный курс

Поиск и извлечение элемента отображения


Оператор взятия индекса является простейшим способом извлечения элемента. Например:

// map<string,int> word_count;

int count = word_count[ "wrinkles" ];

Однако этот способ работает так, как надо, только при условии, что запрашиваемый ключ действительно содержится в отображении. Иначе оператор взятия индекса поместит в отображение элемент с таким ключом. В данном случае в word_count

занесется пара

string( "wrinkles" ), 0

Класс map

предоставляет две операции для того, чтобы выяснить, содержится ли в нем определенное значение ключа.



·                  count(keyValue): функция-член count()

возвращает количество элементов с данным ключом. (Для отображения оно равно только 0 или 1). Если count()

вернула 1, мы можем смело использовать индексацию:

int count = 0;

if ( word_count.count( "wrinkles" ))

    count = word_count[ "wrinkles" ];

·                  find(keyValue): функция-член find()

возвращает итератор, указывающий на элемент, если ключ найден, и итератор end() в противном случае. Например:

int count = 0;

map<string,int>::iterator it = word_count.find( "wrinkles" );

if ( it != word_count.end() )

    count = (*it).second;

Значением итератора является указатель на объект pair, в котором first

содержит ключ, а second – значение. (Мы вернемся к этому в следующем подразделе.)



Содержание раздела