C++:
vector,相当于python中的list,可以当作栈使用
map的底层是用红黑树实现的,键会自动排序,操作的时间复杂度是O(log(n))级别;
unordered_map的底层是用hash table实现的,操作的时间复杂度是常数级别。
set,集合,为内部自动有序(note: 增序)且不含重复元素的容器,内部由红黑树实现;
multiset,内部可以允许有重复元素;
unordered_set,可以去重但是无序,内部由散列实现,速度比set要快很多
更多参见https://zhuanlan.zhihu.com/p/150118797
python:
https://www.runoob.com/python3/python3-data-structure.html
list,相当于C++中的vector,可以当作栈使用
deque: 双向队列
from collections import deque
deque.append() deque.appendleft()
deque.pop() deque.popleft()
https://www.cnblogs.com/xiaobingqianrui/p/8483118.html
Python数据结构常用模块:collections、heapq、operator、itertools
collections是日常工作中的重点、高频模块,常用类型有:
计数器(Counter)
双向队列(deque)
默认字典(defaultdict)
有序字典(OrderedDict)
可命名元组(namedtuple)
模块heapq中一些重要的函数:https://blog.csdn.net/jamfiy/article/details/88185512
函 数 描 述
heappush(heap, x) 将x压入堆中
heappop(heap) 从堆中弹出最小的元素
heapify(heap) 让列表具备堆特征
heapreplace(heap, x) 弹出最小的元素,并将x压入堆中
nlargest(n, iter) 返回iter中n个最大的元素
nsmallest(n, iter) 返回iter中n个最小的元素