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方法添加前缀、中缀或后缀。
    • 查找:findrfind查找子字符串位置。
    • 替换:replace替换特定位置的子串。
  • 比较与存取

    • 较高级的字符串操作可通过重载的operator+=实现,using语句简化调用。

3. Deque容器

Deque(双端队列)是优化版本的vector,支持O(1)时间的前后插入删除。

  • 结构特点
    • deque利用中控器管理非连续内存,支持快速的双端操作。
  • 效率对比:deque的插入删除速度优于 vector,但访问速度略低。

4. Stack和Queue容器

Stack是先进后出结构,仅支持单端插入删除;Queue是先进先出结构,支持双端操作。

  • 操作规则
    • Stack仅通过pushpop进行操作。
    • Queue允许pushpop在两个端点,遵循FIFO原则。

5. List容器

List是链式存储结构,节点间仅用指针连接,支持双向遍历,插入删除高效。

  • 链表优点
    • 插入与删除节点只需修改指针,无需移动大量数据。
    • 支持逆序遍历,增强灵活性。

6. Set与Multiset容器

关联式容器,通过红黑树实现,当元素插入时自动排序,支持快速查找。

  • 差异与应用场景
    • Set不允许重复元素,用于有序列表管理。
    • Multiset允许重复元素,适合统计频率或多重分类。

7. Map与Multimap容器

Map是键值对容器,使用红黑树存储元素,键自动排序,value实时访问。

  • 特性与用途
    • 适用于需要排序数据且关联key-value的场景。
    • Map禁止重复key,Multimap允许,常用于统计频率或多重映射。

通过对这些容器的学习和实践,我们可以根据具体需求,选择最合适的容器实现,从而提升代码的可读性和效率。每个容器都有其独特的优势,了解它们的特性对于高效编程至关重要。

上一篇:计算机网络笔记
下一篇:leetcode 刷题 题3. 无重复字符的最长子串

发表评论

最新留言

表示我来过!
[***.240.166.169]2025年04月25日 02时05分06秒