map :: at () в C ++ STL
Карты - это ассоциативные контейнеры, в которых элементы хранятся сопоставленным образом. Каждый элемент имеет значение ключа и сопоставленное значение. Никакие два сопоставленных значения не могут иметь одинаковые ключевые значения.
Функция at () используется для ссылки на элемент, сопоставленный со значением ключа, заданным в качестве параметра функции. Например, если у нас есть строка «hi», сопоставленная с целым числом 1, то передача целого числа 1 в качестве параметра функции at () вернет строку «hi».
Чем функция at () отличается от operator []
Функция at () проверяет диапазон контейнера и выдает исключение, когда мы пытаемся получить доступ к элементу вне диапазона, в то время как operator [] не проверяет диапазон контейнера и показывает неопределенное поведение, когда элемент не в диапазоне диапазон доступен.
Синтаксис:
mapname .at ( ключ ) Параметры: Значение ключа, сопоставленное с элементом, который нужно получить. Возврат: Прямая ссылка на элемент по заданному значению ключа.
Примеры:
Input : map mymap; mymap["a"] = 1; mymap.at("a"); Output : 1 Input : map mymap; mymap["abcd"] = 7; mymap.at("abcd"); Output : 7
Ошибки и исключения
1. Если ключа нет на карте, выкидывает out_of_range.
2. В противном случае он имеет строгую гарантию отсутствия исключения.
// CPP program to illustrate // Implementation of at() function #include <iostream> #include <map> #include <string> using namespace std; int main() { // map declaration map<string, int > mymap; // mapping strings to integers mymap[ "hi" ] = 1; mymap[ "welcome" ] = 2; mymap[ "thanks" ] = 3; mymap[ "bye" ] = 4; // printing the integer mapped // by string "thanks" cout << mymap.at( "thanks" ); return 0; } |
Выход:
3
Сложность времени: O (logn)
Чем функция at () отличается от operator []
Функция at () проверяет диапазон контейнера и выдает исключение, когда мы пытаемся получить доступ к элементу вне диапазона, в то время как operator [] не проверяет диапазон контейнера и показывает неопределенное поведение, когда элемент не в диапазоне диапазон доступен.