
C++容器笔记
发布日期:2021-05-20 10:42:25
浏览次数:10
分类:精选文章
本文共 1414 字,大约阅读时间需要 4 分钟。
STL(Standard Template Library),面向C++程序开发,提供了丰富的标准模板库,为程序员提供了强大的工具支持。以下将从不同容器的角度详细阐述,帮助我们深入理解和应用这些容器。
1. Vector容器
vector是STL中最常用的序列容器,支持随机访问和双向遍历。其主要特点是元素存储逻辑顺序,且采用连续的物理存储空间。
构造方式:
vector v;
:默认构造,初始为空。vector(n, elem)
:构造n个元素,全都为elem。vector(v.begin(), v.end())
:拷贝其它vector。vector::assign(beg, end)
:从其它集合中拷贝。vector::assign(n, elem)
:构造n个elem。
插入删除:
push_back(ele)
:尾部插入元素。pop_back()
:尾部删除元素。insert(pos, ele)
:在指定位置插入元素。erase(pos)
:删除指定位置的元素。
数据存取:
front()
、back()
:获取首尾元素。at(idx)
:通过索引访问元素。
容器嵌套:
- 操作类似“嵌套向量”,使用
reserve
预留空间,以提升性能。
- 操作类似“嵌套向量”,使用
2. String容器
字符串容器支持复杂操作,如拼接分割、查找替换等,适用于文本数据处理。
构造方式:
string str;
:空字符串。string(num, char)
:构建重复字符的字符串。- 拷贝构造、赋值操作如
assign
等。
字符串操作:
- 拼接:
append
方法添加前缀、中缀或后缀。 - 查找:
find
和rfind
查找子字符串位置。 - 替换:
replace
替换特定位置的子串。
- 拼接:
比较与存取:
- 较高级的字符串操作可通过重载的
operator+=
实现,using
语句简化调用。
- 较高级的字符串操作可通过重载的
3. Deque容器
Deque(双端队列)是优化版本的vector,支持O(1)时间的前后插入删除。
- 结构特点:
- deque利用中控器管理非连续内存,支持快速的双端操作。
- 效率对比:deque的插入删除速度优于 vector,但访问速度略低。
4. Stack和Queue容器
Stack是先进后出结构,仅支持单端插入删除;Queue是先进先出结构,支持双端操作。
- 操作规则:
- Stack仅通过
push
和pop
进行操作。 - Queue允许
push
和pop
在两个端点,遵循FIFO原则。
- Stack仅通过
5. List容器
List是链式存储结构,节点间仅用指针连接,支持双向遍历,插入删除高效。
- 链表优点:
- 插入与删除节点只需修改指针,无需移动大量数据。
- 支持逆序遍历,增强灵活性。
6. Set与Multiset容器
关联式容器,通过红黑树实现,当元素插入时自动排序,支持快速查找。
- 差异与应用场景:
- Set不允许重复元素,用于有序列表管理。
- Multiset允许重复元素,适合统计频率或多重分类。
7. Map与Multimap容器
Map是键值对容器,使用红黑树存储元素,键自动排序,value实时访问。
- 特性与用途:
- 适用于需要排序数据且关联key-value的场景。
- Map禁止重复key,Multimap允许,常用于统计频率或多重映射。
通过对这些容器的学习和实践,我们可以根据具体需求,选择最合适的容器实现,从而提升代码的可读性和效率。每个容器都有其独特的优势,了解它们的特性对于高效编程至关重要。
发表评论
最新留言
表示我来过!
[***.240.166.169]2025年04月25日 02时05分06秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
作为我的第一篇csdn博客吧
2019-03-15
ajax异步提交失败
2019-03-15
一道简单的访问越界、栈溢出pwn解题记录
2019-03-15
Stream 某些API
2019-03-15
测试调用另一台电脑ip是否有用
2019-03-15
mos-excel集成文档
2019-03-15
chat 快问!
2019-03-15
6.Xml
2019-03-15
Linux总结
2019-03-15
DKT—Going Deeper with Deep Knowledge Tracing
2019-03-15
响应的HTTP协议格式+常见的响应码
2019-03-15
创建线程方式
2019-03-15
LRUCache
2019-03-15
关于Linux系统中touch命令的说明
2019-03-15
将windows里的内容直接复制粘贴到ubuntu,提高效率
2019-03-15
将tomcat设置成window自启动服务
2019-03-15
webservice 远程服务器返回错误:(400)错误的请求
2019-03-15
[日常] PHP与Mysql测试kill慢查询并检验PDO的错误模式
2019-03-15
[PHP] try catch在日常中的使用
2019-03-15
[Linux] 进程间通信
2019-03-15