1.1 vector(数组)封装动态数组的顺序容器。 1.2 queue(队列)是容器适配器,他是FIFO(先进先出)的数据结构。 1.3 deque(双端队列)是有下标顺序容器,它允许在其首尾两段快速插入和删除。 1.4 set(集合)集合基于红黑树实现,有自动排序的功能,并且不能存放重复的元素。 1.5 unordered_set(无序集合)基于哈希表实现,...
1#include <iostream>2#include <cstdio>3#include <set>4#include <unordered_set>5#include <unordered_map>6usingnamespacestd;78structNode {9Node() {}10Node(int_x,int_y):x(_x), y(_y) {}11intx, y;12booloperator== (constNode &t)const{13returnx==t.x && y==t.y;14}15};16st...
在STL 中 unordered_map、unordered_set、unordered_multimap、unordered_multiset 四个容器的底层实现都是散列表。 原理图: 一般,hash table里面的槽位单独通过链表串联所属槽位的数据;STL散列表的槽位指针不再这么做,做了优化,将后面具体结点串成一个单链表,而槽位指针指向上一的结点。 举个例子: 现在的hash ta...
包含字符串的无序收集器(unordered collection), 且数据不重复. 添加,获取,移除单个元素; 检查一个元素是否存在于集合中; 计算交集,并集,差集; 从集合里面随机获取元素. 存储不可以重复的数据 ZSet(有序集合) 结构存储值与结构读写能力: 字符串成员(member)与浮点数分值(score)之间的有序映射, 元素的排列顺序由...
关于unordered_set和unordered_map,是boost中很实用的工具类,可以认为就是哈希表。现在它俩已经是C++11中的STL工具类了。虽然和map与set的用法极其类似,但两者的数据结构不同,因此原理和复杂度都不同。通过unordered,你也应该明白哈希表不保证插入元素的顺序,而map和set所基于的平衡树则保证元素插入后保持有序。
<unordered_set>:(TR1)无序容器set,其元素随机存放。multiset类似于set,但是值不必是唯一的。 <unordered_map>:(TR1)无序容器map,其键值随机存放。multimap类似于map,但键不是唯一的。 7、迭代器 <iterator>:给迭代器提供定义和支持。 8、算法 <algorithm>:提供一组基于算法的函数,包括置换、排序、合并和搜索。
vector:底层数据结构:数组 随机访问:O(1) 随机插入与删除:O(n),中间插入会引起后面数据的拷贝,尾部可快速增删 (2)关联式容器 无序关联容器 按键值排好序,底层数据结构均为红黑树 set,multiset,map, multimap,元素是否唯一的区别 无序关联容器 从C++11开始提供的容器,无序的容器,unordered_map、unordered_multima...
存储结构:内部使用哈希表进行实现,支持常数时间的查找、插入、删除元素 元素存取方法:只能通过迭代器访问,不支持随机访问 使用场景:当需要存储唯一元素,而且不需要按照顺序进行排序的场景 代码实现如下: #include#includeusingnamespacestd;intmain{//定义一个unordered_set容器unordered_setiset;//向unordered_set中添加元...
unordered_set<Customer> custset; // 使用时!! 万用的 Hash Function 的实现 实现思想 把一个复杂的结构分解为多个基本类型,然后将各个基本类型的 hashcode 进行组合。 初次尝试 class CustomerHash { public: std::size_t operator() (const Customer &c) const ...