先决条件:
容器旨在根据元素所具有的属性来存储元素,但在某些情况下,我们需要从一个容器转换为另一个容器。其中一种情况是将 Set 转换为向量,如果我们不希望元素按顺序排序,我们也可以应用与将 unordered_set 转换为向量相同的方法。
在 C++ 中设置为向量
有 4 种方法将集合转换为向量:
- 使用范围构造函数
- 使用Push_back()
- 使用复印函数
- 使用向量::分配函数
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)
辅助空间:在)
相关用法
- C++ Set set()用法及代码示例
- C++ Set crbegin()、crend()用法及代码示例
- C++ Set count()用法及代码示例
- C++ Set get_allocator()用法及代码示例
- C++ Set insert()用法及代码示例
- C++ Set cbegin()、cend()用法及代码示例
- C++ Set emplace_hint()用法及代码示例
- C++ Set equal_range()用法及代码示例
- C++ Set max_size()用法及代码示例
- C++ Set upper_bound()用法及代码示例
- C++ Stack emplace()用法及代码示例
- C++ Stack empty()用法及代码示例
- C++ Stack pop()用法及代码示例
- C++ Stack push()用法及代码示例
- C++ Stack size()用法及代码示例
- C++ String Assign()用法及代码示例
- C++ String Data()用法及代码示例
- C++ String Find()用法及代码示例
- C++ String append()用法及代码示例
- C++ String at()用法及代码示例
- C++ String back()用法及代码示例
- C++ String begin()用法及代码示例
- C++ String c_str()用法及代码示例
- C++ String capacity()用法及代码示例
- C++ String cbegin()用法及代码示例
注:本文由纯净天空筛选整理自sarkarrohit650大神的英文原创作品 Convert Set To Vector in C++。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。