cplusplus
.com
教程
参考
文章
论坛
C++
教程
参考
文章
论坛
参考
C 库
<cassert> (assert.h)
<cctype> (ctype.h)
<cerrno> (errno.h)
C++11
<cfenv> (fenv.h)
<cfloat> (float.h)
C++11
<cinttypes> (inttypes.h)
<ciso646> (iso646.h)
<climits> (limits.h)
<clocale> (locale.h)
<cmath> (math.h)
<csetjmp> (setjmp.h)
<csignal> (signal.h)
<cstdarg> (stdarg.h)
C++11
<cstdbool> (stdbool.h)
<cstddef> (stddef.h)
C++11
<cstdint> (stdint.h)
<cstdio> (stdio.h)
<cstdlib> (stdlib.h)
<cstring> (string.h)
C++11
<ctgmath> (tgmath.h)
<ctime> (time.h)
C++11
<cuchar> (uchar.h)
<cwchar> (wchar.h)
<cwctype> (wctype.h)
容器
C++11
<array>
<deque>
C++11
<forward_list>
<list>
<map>
<queue>
<set>
<stack>
C++11
<unordered_map>
C++11
<unordered_set>
<vector>
输入/输出
<fstream>
<iomanip>
<ios>
<iosfwd>
<iostream>
<istream>
<ostream>
<sstream>
<streambuf>
多线程
C++11
<atomic>
C++11
<condition_variable>
C++11
<future>
C++11
<mutex>
C++11
<thread>
其他
<algorithm>
<bitset>
C++11
<chrono>
C++11
<codecvt>
<complex>
<exception>
<functional>
C++11
<initializer_list>
<iterator>
<limits>
<locale>
<memory>
<new>
<numeric>
C++11
<random>
C++11
<ratio>
C++11
<regex>
<stdexcept>
<string>
C++11
<system_error>
C++11
<tuple>
C++11
<type_traits>
C++11
<typeindex>
<typeinfo>
<utility>
<valarray>
<unordered_set>
C++11
unordered_multiset
C++11
unordered_set
unordered_set
C++11
unordered_set::~unordered_set
C++11
unordered_set::unordered_set
成员函数
C++11
unordered_set::begin
C++11
unordered_set::bucket
C++11
unordered_set::bucket_count
C++11
unordered_set::bucket_size
C++11
unordered_set::cbegin
C++11
unordered_set::cend
C++11
unordered_set::clear
C++11
unordered_set::count
C++11
unordered_set::emplace
C++11
unordered_set::emplace_hint
C++11
unordered_set::empty
C++11
unordered_set::end
C++11
unordered_set::equal_range
C++11
unordered_set::erase
C++11
unordered_set::find
C++11
unordered_set::get_allocator
C++11
unordered_set::hash_function
C++11
unordered_set::insert
C++11
unordered_set::key_eq
C++11
unordered_set::load_factor
C++11
unordered_set::max_bucket_count
C++11
unordered_set::max_load_factor
C++11
unordered_set::max_size
C++11
unordered_set::operator=
C++11
unordered_set::rehash
C++11
unordered_set::reserve
C++11
unordered_set::size
C++11
unordered_set::swap
非成员重载
C++11
operators (unordered_set)
C++11
swap (unordered_set)
参考
<unordered_set>
unordered_set
emplace_hint
public member function
<unordered_set>
std::
unordered_set
::emplace_hint
template <class... Args>iterator emplace_hint ( const_iterator position, Args&&... args );
带提示构建并插入元素
在 unordered_set 中插入一个新元素(如果其值是唯一的)。使用
args
作为元素构造函数的参数,在原地构造此新元素。
position
指向容器中的一个位置,该位置被建议作为搜索插入点的提示(容器可能使用也可能不使用此建议来优化插入操作)。
只有当容器中不存在与要 emplaced 的值等价的元素时,插入才会发生(unordered_set 中的元素具有唯一的值)。
如果插入成功,容器的
size
将有效增加一。
存在一个类似的成员函数
insert
,它会复制或移动一个现有对象到容器中,并且也可以接受一个位置提示。
参数
position
作为插入操作的插入位置提示。该值可能被容器用来优化操作。
成员类型
const_iterator
是一个
forward iterator
类型。
args
传递给要插入的新元素的构造函数的参数。
返回值
如果插入成功(因为不存在具有相同值的其他元素),则函数返回指向已插入元素的迭代器。
否则,它返回一个指向容器中与该元素等价的元素的迭代器(该元素不会被替换)。
成员类型
iterator
是一个
forward iterator
类型。
unordered_set
中的所有迭代器都具有对元素的 const 访问权限:元素可以被插入或删除,但不能在容器中被修改。
新元素的存储使用
allocator_traits<allocator_type>::construct()
分配,这在失败时可能会抛出异常(对于默认的
allocator
,
bad_alloc
如果分配请求不成功,则抛出)。
示例
还没有示例。请参阅
unordered_set::emplace
的示例。
复杂度
平均情况:常量。
最坏情况:容器大小的线性。
可能会触发
rehash
(未包含)。
迭代器有效性
在大多数情况下,插入后容器中的所有迭代器都保持有效。唯一的例外是当容器的增长强制重新哈希时。在这种情况下,容器中的所有迭代器都将失效。
如果插入操作后新的容器
size
超过了其容量阈值(计算方法为容器的
bucket_count
乘以其
max_load_factor
),则会强制进行 rehash。
在所有情况下,即使在 rehash 之后,引用仍然保持有效。
另见
unordered_set::emplace
构造并插入元素
(公开成员函数)
unordered_set::insert
插入元素
(公开成员函数)