Контейнеры предназначены для хранения элементов в соответствии с их свойствами, но в некоторых случаях нам нужно преобразовать один контейнер в другой. Одним из таких случаев является преобразование набора в вектор, и мы можем применить те же методы для преобразования unordered_set в вектор, если мы не хотим, чтобы элементы сортировались по порядку.
Установить вектор в C++
Существует 4 метода преобразования набора в вектор:
- Использование конструктора диапазона
- Использование Push_back()
- Использование функции копирования
- Использование функции vector::assign
1. Конструктор диапазонов
Одним из самых простых способов будет объявить векторную переменную с помощью конструктора диапазона в пределах всего диапазона набора. Конструктор диапазона std::vector принимает два итератора ввода, указывающих на начало и конец входной последовательности.
Ниже приведена реализация вышеуказанного подхода
С++
// C++ program to Convert Set To Vector
// Using range constructor
#include <bits/stdc++.h>
using
namespace
std;
int
main()
{
// Set declared
set<
int
> st = { 1, 2, 3, 7, 9, 5 };
cout <<
"Original Set elements\n"
;
for
(
int
i : st)
cout << i <<
" "
;
cout << endl;
// range constructor from
// st.begin() to st.end()
// Vector declared with values
vector<
int
> vc(st.begin(), st.end());
cout <<
"Printing Vector after conversion\n"
;
for
(
int
i : vc)
cout << i <<
" "
;
cout << endl;
return
0;
}
Вывод
Original Set elements 1 2 3 5 7 9 Printing Vector after conversion 1 2 3 5 7 9
2. Функция std::push_back()
Функция std::push_back() в векторе добавляет перемещенный элемент в последнюю позицию. Мы можем перебирать набор и вставлять каждый элемент в наш вектор.
Ниже приведена реализация вышеуказанного подхода
С++
// C++ program to Convert Set To Vector
// using push_back()
#include <bits/stdc++.h>
using
namespace
std;
int
main()
{
// Set declared
set<
int
> st = { 1, 2, 3, 7, 9, 5 };
cout <<
"Original Set elements\n"
;
for
(
int
i : st)
cout << i <<
" "
;
cout << endl;
// vector declared
vector<
int
> vc;
// Inserting elements into vector using
// push_back function
for
(
auto
& it : st) {
vc.push_back(it);
}
cout <<
"Printing Vector after conversion\n"
;
for
(
int
i : vc)
cout << i <<
" "
;
cout << endl;
return
0;
}
Вывод
Original Set elements 1 2 3 5 7 9 Printing Vector after conversion 1 2 3 5 7 9
3. std::функция копирования
std::copy вставляет элементы из исходного контейнера в целевой контейнер. Контейнер назначения должен быть достаточно большим для хранения всех элементов.
Ниже приведена реализация вышеуказанного подхода
С++
// C++ program to Convert Set
// To Vector using
// std:: copy function
#include <bits/stdc++.h>
using
namespace
std;
int
main()
{
set<
int
> st = { 1, 2, 3, 7, 9, 5 };
cout <<
"Original Set elements\n"
;
for
(
int
i : st)
cout << i <<
" "
;
cout << endl;
vector<
int
> vc(st.size());
copy(st.begin(), st.end(), vc.begin());
cout <<
"Printing Vector after conversion\n"
;
for
(
int
i : vc)
cout << i <<
" "
;
cout << endl;
return
0;
}
Вывод
Original Set elements 1 2 3 5 7 9 Printing Vector after conversion 1 2 3 5 7 9
Если мы не знаем размер набора, мы можем использовать функцию std::back_inserter() для пустого вектора, это то же самое, что запустить цикл и push_back() для каждого элемента
Ниже приведена реализация вышеуказанного подхода
С++
// C++ program to Convert Set To Vector
// Using copy function
#include <bits/stdc++.h>
using
namespace
std;
int
main()
{
// Set declared
set<
int
> st = { 1, 2, 3, 7, 9, 5 };
cout <<
"Original Set elements\n"
;
for
(
int
i : st)
cout << i <<
" "
;
cout << endl;
// Vector declared
vector<
int
> vc;
// Using copy
std::copy(st.begin(), st.end(), back_inserter(vc));
cout <<
"Printing Vector after conversion\n"
;
for
(
int
i : vc)
cout << i <<
" "
;
cout << endl;
return
0;
}
Вывод
Original Set elements 1 2 3 5 7 9 Printing Vector after conversion 1 2 3 5 7 9
4. функция std::vector::assign
Функция vector::assign заменяет текущие элементы вектора элементами некоторых других допустимых контейнеров в пределах определенного диапазона
Ниже приведена реализация вышеуказанного подхода
С++
// C++ program to Convert Set To Vector
// Using vector::assign
#include <bits/stdc++.h>
using
namespace
std;
int
main()
{
// Using Set
set<
int
> st = { 1, 2, 3, 7, 9, 5 };
cout <<
"Original Set elements\n"
;
for
(
int
i : st)
cout << i <<
" "
;
cout << endl;
// Vector declared
vector<
int
> vc;
// Using vector::assign
vc.assign(st.begin(), st.end());
cout <<
"Printing Vector after conversion\n"
;
for
(
int
i : vc)
cout << i <<
" "
;
cout << endl;
return
0;
}
Вывод
Original Set elements 1 2 3 5 7 9 Printing Vector after conversion 1 2 3 5 7 9