这里的析构函数不能用默认生成的析构函数,虽然vector会调用它的析构函数,但是其中的节点确不能被释放,因此还需要我们手动地进行释放。只需要遍历哈希表,如果有节点先记录下一个节点的地址,再释放,直到遍历完表。 2、迭代器 unordered_set和unordered_map迭代器的实现,是封装unordered_set和unordered_map的重中之重,...
int> umap1;// 使用列表初始化// 函数原型:unordered_map(initializer_list<value_type>);// 使用初始化列表创建 unordered_mapstd::unordered_map<std::string, int> umap2 {{"Apple", 1}, {"Banana", 2}, {
只是在函数名前面加一个位取反符 ~ ,例如 ~ stud( ),以区别于构造函数。
template<class K,class V> class unordered_map { public: struct mapofkey { K operator()(const pair<K,V>& v) { return v.first;//返回first } };//需要注意这里的仿函数的作用是从一个对象中获得key的值,而不是获得key的类型 bool insert(const pair<K, V>& k) { return _con.insert(k);...
其底层结构不同,他们不再以红黑树作为底层结构,而是以挂哈希桶的哈希表作为底层结构,就是用存储结点指针的vector来实现哈希表,哈希表的每个位置是一个桶,桶结构是一个存储value的单链表,unordered_set的桶中结点存储的是一个key值,unordered_map的桶中结点存储的是一个键值对。
这四个容器与红黑树结构的关联式容器使用方式基本类似,只是 其底层结构不同,他们不再以红黑树作为底层结构,而是以挂哈希桶的哈希表作为底层结构,就是用存储结点指针的vector来实现哈希表,哈希表的每个位置是一个桶,桶结构是一个存储value的单链表,unordered_set的桶中结点存储的是一个key值,unordered_map的桶中...