Простые приложения на С++
December 8, 2024

Преобразуем 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 позволяет работать с массивами и векторами более удобно, без необходимости копирования данных.

Телеграмм канал