Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule pokazano, jak używać map::endsymboli biblioteki szablonów , , map::findmap::insert, map::iteratori map::value_type standardowych (STL) w języku Visual C++.
Oryginalna wersja produktu: Visual C++
Oryginalny numer KB: 157159
Wymagany nagłówek
<map>
Prototypy
iterator map::end();
// Key is the data type of template argument #1 for map
iterator map::find(const Key& key);
pair<iterator, bool> map::insert(const value_type& x);
Uwaga 16.
Nazwy klas/parametrów w prototypach mogą nie być zgodne z wersją w pliku nagłówka. Niektóre zostały zmodyfikowane w celu zwiększenia czytelności.
opis
Funkcja end() zwraca iterator, który wskazuje jeden obok końca sekwencji.
Funkcja Find zwraca iterator, który wybiera pierwszy element, którego klucz sortowania jest keyrówny . Jeśli taki element nie istnieje, iterator jest end()równy .
Jeśli klucz jeszcze nie istnieje, insert doda go do sekwencji i zwróci wartość pair<iterator, true>. Jeśli klucz już istnieje, insert nie dodaje go do sekwencji i zwraca wartość pair <iterator, false>.
Poniższy przykład tworzy mapę kropek do ciągów. W takim przypadku mapowanie pochodzi z cyfr do ich odpowiedników ciągów (1 —> jeden, 2 —> dwa itd.).
Program odczytuje liczbę od użytkownika, znajduje słowo równoważne dla każdej cyfry (przy użyciu mapy) i drukuje liczbę z powrotem jako serię wyrazów. Jeśli na przykład użytkownik wprowadzi wartość 25463, program odpowie: Dwa pięć czterech sześciu trzech.
Przykładowy kod
//////////////////////////////////////////////////////////////////////
// Compile options needed: None
// <filename> : main.cpp
// Functions:
// end
// find
// insert
// of Microsoft Product Support Services,
// Copyright (c) 1996 Microsoft Corporation. All rights reserved.
//////////////////////////////////////////////////////////////////////
// disable warning C4018: '<' : signed/unsigned mismatch
// okay to ignore
#pragma warning(disable: 4018)
#pragma warning(disable:4786)
#include <iostream>
#include <string>
#include <map>
using namespace std;
typedef map<int, string, less<int>, allocator<string> > INT2STRING;
void main()
{
// 1. Create a map of ints to strings
INT2STRING theMap;
INT2STRING::iterator theIterator;
string theString = "";
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;
}
}
Dane wyjściowe programu:
Enter "q" to quit, or enter a Number: 22
Two Two
Enter "q" to quit, or enter a Number: 33
Three Three
Enter "q" to quit, or enter a Number: 456
Four Five Six
Enter "q" to quit, or enter a Number: q
Informacje
Aby uzyskać te same informacje o map::endelementach , map::findi map::insert, odwiedź stronę map::insert, map::find i map::end.