С++ для начинающих


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


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

// 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 – значение. (Мы вернемся к этому в следующем подразделе.)



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