Поделиться через


map::insert, map::find, и map::end

Демонстрируется использование сопоставление:: insert,сопоставление:: найти, и сопоставление:: end Стандартные функции библиотеки стандартных шаблонов (STL) в Visual C++.

iterator map::end( ); 
iterator map::find(
   const Key& Key
);
pair<iterator, bool> 
map::insert(
   const value_type& x
);

Заметки

ПримечаниеПримечание

Имена класса и параметра в прототипе не соответствует версии в файле заголовка.Некоторые были изменены для улучшения удобочитаемости.

End функция возвращает итератор эти элементы одно за пределами последовательности.найти возвращает итератор, задающий первый элемент, ключ сортировки равно ключ.Если такой элемент не существует, то равно итератора end.Если ключ еще не существует, то insert добавляет его в последовательности и возвратит pair<итератор" true>.Если ключ уже существует, insert не добавляет ее к последовательности и не возвращает pair <итератор" false>.Следующий пример создает сопоставление ints к СтрокаS.В этом случае сопоставление из цифр с их эквивалентами строки (1 - > "один", 2 - > "2" и т д).Программа считывает число от пользователя, находит число машинного слова для каждого числа (с использованием сопоставления), и введите число обратно в виде последовательности машинных слов.Например, если пользователь вводит 25463, то программа отвечает. 2 5 4 6 3.

Пример

// map_insert_find_end.cpp
// compile with: /EHsc
#pragma warning(disable:4786)
#include <iostream>
#include <string>
#include <map>

using namespace std;

typedef map<int, string, less<int> > INT2STRING;

int main()
{
   // 1. Create a map of ints to strings
   INT2STRING theMap;
   INT2STRING::iterator theIterator;
   string theString = "";
   unsigned int index;

   // Fill it with the digits 0 - 9, each mapped to its string counterpart
   // Note: value_type is a pair for maps...
   theMap.insert(INT2STRING::value_type(0,"Zero"));
   theMap.insert(INT2STRING::value_type(1,"One"));
   theMap.insert(INT2STRING::value_type(2,"Two"));
   theMap.insert(INT2STRING::value_type(3,"Three"));
   theMap.insert(INT2STRING::value_type(4,"Four"));
   theMap.insert(INT2STRING::value_type(5,"Five"));
   theMap.insert(INT2STRING::value_type(6,"Six"));
   theMap.insert(INT2STRING::value_type(7,"Seven"));
   theMap.insert(INT2STRING::value_type(8,"Eight"));
   theMap.insert(INT2STRING::value_type(9,"Nine"));

   // Read a Number from the user and print it back as words
   for( ; ; )
   {
      cout << "Enter \"q\" to quit, or enter a Number: ";
      cin >> theString;
      if (theString == "q")
         break;

      // extract each digit from the string, find its corresponding
      // entry in the map (the word equivalent) and print it
      for (index = 0; index < theString.length(); index++)
      {
         theIterator = theMap.find(theString[index] - '0');
         if (theIterator != theMap.end() )   // is 0 - 9
            cout << (*theIterator).second << " ";
         else    // some character other than 0 - 9
            cout << "[err] ";
      }
      cout << endl;
   }
}

Ввод

12
q

Пример результатов выполнения

Enter "q" to quit, or enter a Number: 12
One Two
Enter "q" to quit, or enter a Number: q

Требования

заголовок:<сопоставление>

См. также

Основные понятия

Образец библиотеки стандартных шаблонов