Преобразование множества в вектор в C++

Как преобразовать строку в int в C++ Программирование и разработка

Контейнеры предназначены для хранения элементов в соответствии с их свойствами, но в некоторых случаях нам нужно преобразовать один контейнер в другой. Одним из таких случаев является преобразование набора в вектор, и мы можем применить те же методы для преобразования unordered_set в вектор, если мы не хотим, чтобы элементы сортировались по порядку.

Установить вектор в C++

Существует 4 метода преобразования набора в вектор:

  1. Использование конструктора диапазона
  2. Использование Push_back()
  3. Использование функции копирования
  4. Использование функции 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 вставляет элементы из исходного контейнера в целевой контейнер. Контейнер назначения должен быть достаточно большим для хранения всех элементов.

Читайте также:  9 хитростей CSS для продвинутых медиазапросов, которые вы должны знать

Ниже приведена реализация вышеуказанного подхода

С++

// 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

Оцените статью
bestprogrammer.ru
Добавить комментарий