BerthaDusStuf Ответов: 1

Я изо всех сил пытаюсь понять, что такое карты в C++


Я читаю книгу под названием jumping into C++ Алекса Аллейна, и он представил карты со строками кода, такими как:

map<string, string> name_to_email;

name_to_email[ "Alex Allain" ] = "webmaster@cprogramming.com";

cout << name_to_email[ "Alex Allain" ];


И он продолжает говорить, как полезны карты, но проблема в том, что я не могу понять, в чем их польза. Их размер может быть изменен (например, связанный список, двоичное дерево или вектор), они могут хранить несколько значений на узел (например, связанный список или двоичное дерево) и они могут хранить значения различных типов (например, связанный список или двоичное дерево). Так что же именно делает эти карты полезными? Объясните в простых терминах, пожалуйста, так как я буду изо всех сил пытаться понять сложные термины программирования.

Что я уже пробовал:

Я пробовал читать объяснения в книгах о том, почему используются карты, и пробовал читать объяснения в интернете о том, почему они используются, но тоже не мог по-настоящему понять.

1 Ответов

Рейтинг:
5

Rick York

Основная причина, по которой они так полезны, заключается в том, что они делают поиск и поиск интересующих ценностей очень быстрым. Первый элемент на карте называется ключом и используется для поиска. Обычно двоичное дерево или что-то подобное содержит данные за кулисами, причем первое значение-это идентификатор, который ищет поиск. Скорость поиска - это сила карт.


CPallini

5.

BerthaDusStuf

Значит, именно тот факт, что u может использовать переменную для получения индекса, делает их хорошими для поиска?

Rick York

Да и то, что это один из самых быстрых доступных алгоритмов поиска. Скорость-это действительно самый важный момент здесь. Существует множество алгоритмов, поддерживающих поиск ключевого значения, но очень немногие из них так же быстры и эффективны, как std::map, и именно поэтому они являются частью стандартной библиотеки. Вы можете использовать простой вектор или список структур и линейный поиск, чтобы найти ключ, но с большим набором данных, которые могут быть слишком медленными. Карта значительно ускорит процесс.

BerthaDusStuf

о, Хорошо, спасибо, а также знаете ли вы, строятся ли карты как массивы или как связанные списки, или что это за структура данных?

Rick York

Я не уверен, потому что мне это не нужно :) но я думаю, что они ближе к массиву (на самом деле вектор), потому что я думаю, что он использует алгоритм двоичного поиска, и они обычно имеют упорядоченный массив внутри.

BerthaDusStuf

Хорошо спасибо