«Связывающий контейнер, известный как карта, позволяет хранить в C++ элементы, полученные в результате взаимодействия пары ключ-значение и отображаемых данных в определенной последовательности. Соответствующие ключи в контейнере карты всегда используются для правильной организации информации. Используя его специальные ключи, можно получить значения контейнера карты. Для извлечения данных из контейнера мы использовали функцию map::search(), которая находится в заголовочном файле
Map::search() — это встроенная функция в C++ STL (стандартная библиотека шаблонов), которая предоставляет итератор или статический итератор, указывающий на место на карте, в котором находится ключ. Он создает итератор или статический итератор, который ссылается на карту; если ключ недоступен в контейнере, то вызывается функция map.end()».
- Преимущества функции map::search() в C++
- Синтаксис функции map::search() в C++
- Параметры в функции map::search() в C++
- Возвращаемое значение в функции map::search() в C++
- Завершение выполнения для компонента поиска
- Пример 1. Использование функции map::search() для поиска компонента с заданным значением ключа в C++
- Пример 2: Используйте функцию map::search() для отображения всех компонентов после обнаружения компонента
- Заключение
Преимущества функции map::search() в C++
К преимуществам объекта std::map относятся быстрый поиск, включение и удаление действий, которые можно выполнить за логарифмическое время. Компонент find, который получает ссылку на ключ, предлагает функцию поиска. Итератор для соответствующего компонента создается, если указанный ключ может быть расположен в объекте std::map. Предыдущий итератор (map::end()) дается, если, наоборот, предоставленный ключ не находится в контейнере.
Синтаксис функции map::search() в C++
Вот синтаксис функции map::search() в C++.
«ИЛИ ЖЕ»
Параметры в функции map::search() в C++
Указание ключа для поиска в контейнерах карт — единственный обязательный параметр, который позволяет функция map::search().
Возвращаемое значение в функции map::search() в C++
Вычисляемое значение функции является либо итератором, либо константным итератором, указывающим на расположение ключа на карте. Если каким-либо образом ключ отсутствует в контейнерах карты, функция вернет итерацию или статическую итерацию, указывающую на функцию map.end().
Завершение выполнения для компонента поиска
Поиск компонентов в функции std::map search() занимает время O(log n). Поскольку существует внутреннее хранилище элементов в виде балансирующего двоичного дерева поиска (BST), даже в худшем сценарии оно должно быть O(log n) по сравнению со std::string. Напротив, временная сложность поиска в идеальном случае составляет O(1), поскольку компоненты хранятся в реляционной таблице, а ключ служит индикатором при попытке поиска в несортированных картах.
Пример 1. Использование функции map::search() для поиска компонента с заданным значением ключа в C++
Вот следующий фрагмент кода; мы использовали функцию map::search() в C++, чтобы найти ключ, в котором он находится. В нашем коде, во-первых, мы добавили заголовочный файл «iostream», который является стандартным потоком ввода-вывода для таких объектов, как cin, cout и т. д. Затем добавьте заголовочный файл «map», который содержит организованные пары ключ-значение, где каждый ключ уникален и может быть только добавлен или удален. Затем мы использовали стандартное «пространство имен std» в нашем коде, потому что более одной переменной, функции, класса и т. д. не могут иметь одну и ту же идентичность в точном контексте C++.
#include <iostream>
#include <map>
using namespace std;
Далее был предоставлен метод main(), который был создан для начала выполнения кода. В функции main(), во-первых, мы объявили переменную «n» с типом данных «integer». Контейнер «map<int, string> m1» содержит упорядоченный набор данных, содержащий ключевые значения, а «m1» является членом связанных контейнеров в стандартной библиотеке шаблонов C++. Имейте в виду, что ключи в контейнере «map<int, string>» являются эксклюзивными. В результате, если новые элементы добавляются при использовании текущих ключей, ничего не происходит. Однако, если ключи совпадают, некоторые уникальные функции-члены в контейнере «map<int, string>» могут добавлять новые данные к ранее существовавшим парам.
После этого «cout» используется для вывода точной строки информации, записанной в кавычках. Затем «cin» используется для получения ввода от пользователя. Затем ключевое слово «auto» используется для поиска элемента в контейнере «m1».
int main()
{
int n;
map m1 = {{1 , «Hello»},
{2 , «Java»},
{3 , «Python»},
{4 , «Ruby»},
{5 , «React»},
{6 , «Angular»},};cout<>n;
auto item = m1.find(n);
После объявления используется условие if-else. В операторе if мы проверяем элемент, доступен ли он в контейнере m1, а затем печатаем элемент. Если он не находится в контейнере «m1», он показывает сообщение об ошибке, которое было записано в «cout».
if (item != m1.end())
{
cout << «Key exists!» << endl << «The Key at index «
<first << » is « <second << endl;
}
else
{
cout <<«Key does not exist!» << endl << «Sorry for inconvenience.»
<< endl <<«Please try again with correct key index from 1 to 6»;
}
В конце функции main() мы вернем «EXIT_SUCCESS», что указывает на успешное выполнение программы.
return EXIT_SUCCESS;
}
Вот полная иллюстрация функции map::search(), которая используется для поиска компонента с использованием значения ключа, предоставленного пользователем.
После компиляции вышеуказанной программы она покажет следующее сообщение о том, что пользователь должен ввести индекс ключа, который он/она хочет найти. Пользователи должны ввести индекс ключа в диапазоне от 1 до 6.
Как вы можете видеть ниже, когда пользователь вводит индекс 1 ключа, он показывает сообщение о том, что «Ключ существует!» а ключ по индексу 1 — «Hello».
Если пользователь вводит ключ индекса выше диапазона от 1 до 6, компилятор выдает сообщение об ошибке «пожалуйста, попробуйте еще раз с правильным ключом индекса от 1 до 6».
Пример 2: Используйте функцию map::search() для отображения всех компонентов после обнаружения компонента
Давайте возьмем другой пример, чтобы напечатать все компоненты случайного порядка после обнаружения компонента. Чтобы предотвратить любые проблемы во время компиляции и выполнения кода, мы включили в код заголовочный файл «bits/stdc++.h». Функция main() была инициализирована после добавления библиотеки заголовков и «пространства имен std». В функции main() мы инициализировали контейнер m1. Затем значения вставляются в случайном порядке. После этого оператор «cout» используется для печати вывода, то же самое написано в кавычках. Затем применяется условие «для», чтобы найти позицию, в которой присутствует «2», с помощью функции find(). Затем верните 0, что означает успешное выполнение программы.
#include <bits/stdc++.h>
using namespace std;int main()
{
map m1;m1.insert({ 2, 101 });
m1.insert({ 1, 689 });
m1.insert({ 3, 350 });
m1.insert({ 6, 991 });
m1.insert({ 4, 541 });
m1.insert({ 5, 542 });cout << «Elements from position 2 onward are: «<<endl;
cout << «KEY\tELEMENT»<<endl;for (auto iterator = m1.find(2); iterator != m1.end(); iterator++)
{
cout <first << ‘\t‘ <second <<endl;
}return 0;
}
Вот вывод скомпилированной программы:
Заключение
В этой статье приведено достаточно примеров, чтобы проиллюстрировать работу метода map::search() языка C++. Мы обсудили работу map::search() на C++. Мы также обсудили преимущества, параметры и возвращаемое значение функции map::search(). В конце мы собрали несколько примеров, чтобы помочь пользователю найти компонент со значением ключа в C++.