C++去重容器 unordered_set 用法概述

unordered_set构造函数

unordered_set<int> set1; //创建空set
unordered_set<int> set2(set1);    //拷贝构造
unordered_set<int> set3(set1.begin(), set1.end());    //迭代器构造
unordered_set<int> set4(arr,arr+5);    //数组构造
unordered_set<int> set5(move(set2));    //移动构造
unordered_set<int> set6 {1,2,10,10};//使用initializer_list初始化

unordered_set基本操作

unordered_set::insert //增
unordered_set::erase //删
unordered_set::find //查

其中insert()函数的函数原型为:

unordered_set<Key, Hash, KeyEqual, Allocator>::insert

它可以插入作为参数传入的单个元素。在这种情况下,它会返回一个 pair 对象

pair<iterator, bool>

由于unordered_set底层实现为hash,故set内不会出现重复元素。根据这个性质,结合insert函数,可以验证插入元素是否重复。

#include <iostream>
#include <unordered_set>
using namespace std;

int main () {
	unordered_set<int> myset;
	pair<unordered_set<int>::iterator, bool> ret;
	myset.insert(1);
	ret = myset.insert(1);
	if (!ret.second) {
		cout << "error" << endl;
	} else {
		cout << "successful" << endl;
	}
}

由于元素重复插入,此段程序输出为“error”。

猜你喜欢

转载自blog.csdn.net/waveleting/article/details/109002440