文章目录
- 1 vector转set
- 2 set转vector
- 参考文献
1 vector转set
通过unordered_set
的构造方法即可获得
unordered_set<int> set(vec.begin(), vec.end());
使用vector
的rbegin()
和rend()
反向迭代器可以得到升序结果
unordered_set<int> set(vec.rbegin(), vec.rend());
完整代码
代码语言:javascript复制#include <iostream>
#include <unordered_set> // #include<set> 同理
#include <vector>
#include <algorithm>
using namespace std;
int main() {
vector<int> vec = { 1, 2, 3, 4, 8, 9, 3, 2, 1, 0, 4, 8 };
sort(vec.rbegin(), vec.rend());
unordered_set<int> set(vec.begin(), vec.end());
for (auto st : set)
cout << st << endl;
return 0;
}
2 set转vector
通过assign()
函数来进行分配
vec.assign(set.begin(), set.end());
【注意】:set
没有rbegin()
和rend()
反向迭代器
以下总结一下assign()
函数的两种用法:
【语法1】:容器.assign(iterator1, iterator2);
// 1.向量
vector_name.assign(iterator1, iterator2);
// 2.队列
deque_name.assign(iterator1, iterator2);
// 其他容器, 如array和string等
【语法2】:容器.assign(size, value);
【功能】:向容器中存储size
个value
// 1.向量
vector_name.assign(size, value);
// 2.队列
deque_name.assign(size, value);
// 其他容器, 如array和string等
参考文献
[1] C deque assign()用法及代码示例