C++11哈希集合set与向量vector的互转

2021-09-18 16:10:38 浏览数 (1)

文章目录

    • 1 vector转set
    • 2 set转vector
    • 参考文献

1 vector转set

通过unordered_set的构造方法即可获得

代码语言:javascript复制
unordered_set<int> set(vec.begin(), vec.end());

使用vectorrbegin()rend()反向迭代器可以得到升序结果

代码语言:javascript复制
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()函数来进行分配

代码语言:javascript复制
vec.assign(set.begin(), set.end());

【注意】:set没有rbegin()rend()反向迭代器

以下总结一下assign()函数的两种用法: 【语法1】:容器.assign(iterator1, iterator2);

代码语言:javascript复制
// 1.向量
vector_name.assign(iterator1, iterator2);
// 2.队列
deque_name.assign(iterator1, iterator2);
// 其他容器, 如array和string等

【语法2】:容器.assign(size, value); 【功能】:向容器中存储sizevalue

代码语言:javascript复制
// 1.向量
vector_name.assign(size, value);
// 2.队列
deque_name.assign(size, value);
// 其他容器, 如array和string等

参考文献

[1] C deque assign()用法及代码示例

0 人点赞