当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


C++ Set转Vector用法及代码示例


先决条件:

容器旨在根据元素所具有的属性来存储元素,但在某些情况下,我们需要从一个容器转换为另一个容器。其中一种情况是将 Set 转换为向量,如果我们不希望元素按顺序排序,我们也可以应用与将 unordered_set 转换为向量相同的方法。

在 C++ 中设置为向量

有 4 种方法将集合转换为向量:

  1. 使用范围构造函数
  2. 使用Push_back()
  3. 使用复印函数
  4. 使用向量::分配函数

1. 范围构造函数

最简单的方法之一是在集合的整个范围内使用范围构造函数来声明向量变量。 std::vector range 构造函数采用两个输入迭代器,分别指向输入序列的开头和结尾。

下面是上述方法的实现

C++


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


// 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::复制函数

标准::复制将源容器中的元素插入到目标容器中。目标容器应该足够大以存储所有元素。

下面是上述方法的实现

C++


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


// 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::赋值函数

vector::assign 函数用特定范围内的其他一些有效容器的元素替换当前向量元素

下面是上述方法的实现

C++


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

时间复杂度:O(N)
辅助空间:在)



相关用法


注:本文由纯净天空筛选整理自sarkarrohit650大神的英文原创作品 Convert Set To Vector in C++。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。