Готовы ли вы раскрыть возможности unordered_map в C++? Пристегнитесь, и мы углубимся в мир инициализации этого универсального контейнера с разговорными объяснениями и практическими примерами кода. К концу этой статьи вы будете вооружены набором методов, которые помогут начать ваши приключения на unordered_map.
Но сначала давайте быстро разберемся, что такое unordered_map. Это ассоциативный контейнер на языке C++, в котором хранятся пары ключ-значение, обеспечивающие среднюю сложность постоянного времени для таких операций, как вставка, удаление и извлечение. Вот как вы можете инициализировать unordered_map, используя различные методы:
Метод 1: инициализация с фигурными скобками
std::unordered_map<std::string, int> myMap = {{"apple", 10}, {"banana", 5}, {"orange", 8}};
Этот метод использует инициализацию в фигурных скобках для непосредственной инициализации unordered_map списком пар ключ-значение.
Метод 2: использование функции вставки
std::unordered_map<std::string, int> myMap;
myMap.insert({"apple", 10});
myMap.insert({"banana", 5});
myMap.insert({"orange", 8});
Здесь мы начинаем с пустой unordered_map и используем функцию вставки для добавления элементов один за другим.
Метод 3: использование функции make_pair
std::unordered_map<std::string, int> myMap;
myMap.insert(std::make_pair("apple", 10));
myMap.insert(std::make_pair("banana", 5));
myMap.insert(std::make_pair("orange", 8));
Подобно методу 2, этот подход предполагает использование функции вставки, но вместо инициализации в фигурных скобках мы создаем пары с помощью функции make_pair.
Метод 4. Инициализация диапазона
std::vector<std::pair<std::string, int>> keyValuePairs = {{"apple", 10}, {"banana", 5}, {"orange", 8}};
std::unordered_map<std::string, int> myMap(keyValuePairs.begin(), keyValuePairs.end());
В этом методе мы сначала инициализируем вектор пар ключ-значение, а затем используем конструктор диапазона unordered_map, чтобы инициализировать его элементами вектора.
Метод 5: функция размещения
std::unordered_map<std::string, int> myMap;
myMap.emplace("apple", 10);
myMap.emplace("banana", 5);
myMap.emplace("orange", 8);
Функция emplace позволяет нам создавать и вставлять элементы на месте, избегая ненужных копий или перемещений.
Это всего лишь несколько методов инициализации unordered_map в C++. Каждый подход имеет свои преимущества и может подходить для разных сценариев. Поэкспериментируйте с ними, чтобы найти тот, который соответствует вашим конкретным потребностям.
В заключение, инициализировать unordered_map в C++ проще простого, используя эти методы в вашем наборе инструментов. Предпочитаете ли вы инициализацию со скобками, использование функции вставки или использование возможностей emplace, у вас есть свободный выбор. Так что вперед, погрузитесь в мир unordered_map и раскройте свое мастерство программирования!