map是关联式的,vector、list、deque是序列式的。
map:底层机制RB-tree(红黑树),元素自动排序,键值对。
vector:操作方式与array相似,动态空间增长。是连续性空间,支持随机访问。
优点:
? 内存动态增长,不需要指定内存大小。
? 支持随机访问,即支持[]和vector.at()。
缺点:
? 在内部进行插入删除操作效率低。
? 只能在vector的最后进行push和pop。
list:对空间的运用有绝对的精准,一点也不浪费。删除插入简单,但不支持随机访问。双向线性列表。
优点:
? 方便插入和删除。
? 可在两端push、pop。
缺点:不能随机访问。
deque:双向开口的连续性空间。头尾两端分别做元素的插入和删除。
优点:
? 随机访问。
? 方便插入和删除。
? 可在两端push、pop。
缺点:内部实现复杂,效率较低。排序等不适用。
使用场合总结:
? 需要高效的存取,不在于插入和删除效率,使用vector。
? 需要大量插入和删除,不关心存取,使用list。
? 关心存取,且两端数据进行插入和删除,使用deque。
? 键值对,一对一映射,采用map。
时间: 2024-11-07 02:40:23