先決條件:
容器旨在根據元素所具有的屬性來存儲元素,但在某些情況下,我們需要從一個容器轉換為另一個容器。其中一種情況是將 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++。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。