STL容器分类

博客主要围绕STL容器分类展开,但具体内容缺失。STL容器在信息技术领域有重要应用,了解其分类有助于更好地进行程序开发。

 

      

C++ 的 STL(标准模板库)容器主要分为以下几类: ### 序列式容器 - **vector**:动态数组,支持随机访问,在尾部插入和删除元素效率较高。例如: ```cpp #include <vector> #include <iostream> int main() { std::vector<int> vec = {1, 2, 3, 4}; vec.push_back(5); std::cout << vec[0] << std::endl; // 输出1 return 0; } ``` - **deque**:双端队列,支持在头部和尾部快速插入和删除元素,也支持随机访问。 - **list**:双向链表,不支持随机访问,但在任意位置插入和删除元素效率高。 - **forward_list**:单向链表,只支持单向顺序访问,插入和删除操作比 `list` 更节省空间。 - **array**:固定大小的数组,支持随机访问,性能与普通数组相当,但提供了更多的 STL 接口。 ### 关联式容器 - **set**:集合,元素唯一且自动排序,基于红黑树实现。例如: ```cpp #include <set> #include <iostream> int main() { std::set<int> s; s.insert(3); s.insert(1); s.insert(2); for (auto it = s.begin(); it != s.end(); ++it) { std::cout << *it << " "; } return 0; } ``` - **multiset**:多重集合,元素可重复且自动排序,同样基于红黑树实现。 - **map**:映射,存储键值对,键唯一且自动排序,基于红黑树实现。例如: ```cpp #include <map> #include <iostream> int main() { std::map<int, std::string> m; m[1] = "one"; m[2] = "two"; m[3] = "three"; for (auto it = m.begin(); it != m.end(); ++it) { std::cout << it->first << ": " << it->second << std::endl; } return 0; } ``` - **multimap**:多重映射,键可重复且自动排序,基于红黑树实现。 ### 容器适配器 - **stack**:栈,后进先出(LIFO)的数据结构,基于 `deque` 实现。例如: ```cpp #include <stack> #include <iostream> int main() { std::stack<int> st; st.push(1); st.push(2); st.push(3); while (!st.empty()) { std::cout << st.top() << " "; st.pop(); } return 0; } ``` - **queue**:队列,先进先出(FIFO)的数据结构,基于 `deque` 实现。 - **priority_queue**:优先队列,元素按优先级排序,默认最大元素在队首,基于堆实现。例如: ```cpp #include <queue> #include <iostream> int main() { std::priority_queue<int> pq; pq.push(3); pq.push(1); pq.push(2); while (!pq.empty()) { std::cout << pq.top() << " "; pq.pop(); } return 0; } ``` ### 无序关联式容器(C++11 及以后) - **unordered_set**:无序集合,元素唯一,基于哈希表实现,查找、插入和删除操作平均时间复杂度为 O(1)。 - **unordered_multiset**:无序多重集合,元素可重复,基于哈希表实现。 - **unordered_map**:无序映射,存储键值对,键唯一,基于哈希表实现。 - **unordered_multimap**:无序多重映射,键可重复,基于哈希表实现。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值