Преобразуем std::vector в массив C++
В C++ вы можете преобразовать вектор в массив, используя стандартные функции и возможности языка.
Вариант 1
#include <iostream> #include <vector> #include <array> int main() { // Создаем вектор std::vector<int> vec = { 1, 2, 3, 4, 5 }; // Преобразуем вектор в массив std::array<int, 5> arr; std::copy(vec.begin(), vec.end(), arr.begin()); // Выводим элементы массива for (const auto& elem : arr) { std::cout << elem << " "; } return 0; }
В представленном примере мы создаем вектор vec с пятью элементами.
С помощью std::copy копируем элементы из вектора в массив arr.
Используем цикл для вывода элементов массива.
Обратите внимание, что размер массива должен быть известен заранее, так как std::array имеет фиксированный размер.
Вариант 2
#include <iostream> #include<vector> using namespace std; int main() { system("chcp 1251>null"); vector<string> name{ "Алексей", "Илья","Добрыня","Иван" }; string* newname = &name[0]; for (auto s : name) cout << s << " "; cout << endl << endl; system("pause"); }
Создается вектор name
, который содержит четыре строки: "Алексей", "Илья", "Добрыня" и "Иван". Создается указатель newname
, который указывает на первый элемент вектора name
. Это позволяет работать с элементами вектора как с обычным массивом. Используется цикл for
для перебора всех элементов вектора name
.
Если вы используете C++20, можно использовать std::span
для работы с массивами и векторами.
Вариант 3
#include <iostream> #include <vector> #include <array> #include <span> int main() { std::vector<int> vec = { 1, 2, 3, 4, 5 }; // Создаем span от вектора std::span<int> span(vec.data(), vec.size()); // Выводим элементы span for (int i : span) { std::cout << i << " "; } return 0; }
Создается вектор vec
, который содержит пять целых чисел: 1, 2, 3, 4 и 5. Создается объект span
, который представляет собой непрерывный диапазон элементов, ссылаясь на данные вектора vec
. vec.data()
возвращает указатель на первый элемент вектора. vec.size()
указывает количество элементов в векторе. std::span
позволяет работать с массивами и векторами более удобно, без необходимости копирования данных.