常用STL容器特性 | 小牛学习日记
常用STL容器特性
Published in:2025-03-04 | category: C++
Words: 598 | Reading time: 2min | reading:

常用STL容器特性

容器 操作 底层实现 特点 是否自动排序 能否使用迭代器 元素能否重复
Vector 构造: vector<T> v;
插入: v.push_back(val);, v.insert(pos, val);
删除: v.pop_back();, v.erase(pos);
访问头尾: v.front(), v.back()
其他: v.size(), v.empty(), v.clear()
动态数组 动态数组,支持快速随机访问,尾部插入/删除高效,中间插入/删除较慢。
String 构造: string s;
插入: s.push_back(c);, s.insert(pos, str);
删除: s.pop_back();, s.erase(pos, len);
访问头尾: s.front(), s.back()
其他: s.size(), s.empty(), s.clear(), s.substr(pos, len)
动态数组 专门用于存储字符序列,支持字符串操作(如子串、查找、替换等)。
Deque 构造: deque<T> dq;
插入: dq.push_back(val);, dq.push_front(val);
删除: dq.pop_back();, dq.pop_front();
访问头尾: dq.front(), dq.back()
其他: dq.size(), dq.empty(), dq.clear()
分段连续空间(双端队列) 双端队列,支持头部和尾部高效插入/删除,随机访问性能略低于 vector
Queue 构造: queue<T> q;
插入: q.push(val);
删除: q.pop();
访问头尾: q.front(), q.back()
其他: q.size(), q.empty()
基于 dequelist 先进先出(FIFO)容器,只允许在尾部插入,头部删除。
Stack 构造: stack<T> st;
插入: st.push(val);
删除: st.pop();
访问头尾: st.top()
其他: st.size(), st.empty()
基于 dequevector 后进先出(LIFO)容器,只允许在顶部插入/删除。
List 构造: list<T> lst;
插入: lst.push_back(val);, lst.push_front(val);
删除: lst.pop_back();, lst.pop_front();
访问头尾: lst.front(), lst.back()
其他: lst.size(), lst.empty(), lst.clear(), lst.remove(val)
双向链表 双向链表,支持高效插入/删除,不支持随机访问,内存占用较高。
Set 构造: set<T> s;
插入: s.insert(val);
删除: s.erase(val);
访问头尾: *s.begin(), *s.rbegin()
其他: s.size(), s.empty(), s.clear(), s.find(val)
红黑树 基于红黑树实现,元素唯一且自动排序,查找效率高。 否(multiset可以重复)
Map 构造: map<K, V> m;
插入: m.insert({key, val});
删除: m.erase(key);
访问头尾: m.begin()->second, m.rbegin()->second
其他: m.size(), m.empty(), m.clear(), m.find(key)
红黑树 基于红黑树实现,键值对存储,键唯一且自动排序,查找效率高。 否(multimap可以重复)
Prev:
阻塞和非阻塞,同步、异步I/O