C++11&QT复习 (十四)

Day9 数据结构学习笔记(2025.04.01)

一、C++基础快速回顾

  • 内存模型
    • 栈(stack)与堆(heap)分配
    • 指针与引用(左值引用、右值引用、const 引用)
  • 类型系统
    • 内置类型与自定义类型
    • 构造与析构(RAII)
    • 拷贝与赋值(深拷贝/浅拷贝,共享/独占语义)
    • 移动语义(C++11)
    • 操作符重载
    • 继承与多态(虚函数、RTTI)
  • 模板
    • 泛型编程基础
    • 模板函数与模板类

二、STL(标准模板库)

STL由以下五个核心部分组成:

  1. 容器(Containers)
    • 存储和管理数据结构(如数组、链表、哈希表、树等)
    • 常见限制:不能使用引用类型或函数作为元素
  2. 迭代器(Iterators)
    • 提供统一方式访问容器元素
    • 本质行为类似指针(重载 *, ->, ++, -- 等)
  3. 算法(Algorithms)
    • 提供常见操作如排序、查找、复制、删除等
    • 与容器无关,仅依赖迭代器
  4. 函数对象与适配器
    • std::less,可定制算法行为
  5. 工具类与API封装
    • 如智能指针、时间、线程、文件系统等

三、常见容器及其对应的数据结构

容器 数据结构 特点
std::array 固定大小数组 编译期大小,栈分配
std::vector 动态数组 支持随机访问,自动扩容
std::forward_list 单向链表 内存使用少,不能反向遍历
std::list 双向链表 可双向遍历,插入删除效率高
std::set/map 红黑树(有序) 元素有序,插入删除O(logn)
std::unordered_set/map 哈希表(无序) 查询效率高,O(1)平均复杂度
std::stack 栈(适配器) LIFO,默认基于deque实现
std::queue 队列(适配器) FIFO,默认基于deque实现
std::priority_queue 堆(适配器) 默认大顶堆
std::deque 双端队列 头尾高效插入删除
std::tuple / std::pair 异构数据结构 用于存储不同类型的多个值

四、容器操作演示

1. 基本容器使用
std::array<int, 10> arr = {
   };      // 固定数组
std::vector<int> vec;              // 动态数组
std::forward_list<int> flist;      // 单向链表
std::list<int> dlist;              // 双向链表
std::set<int> s;                   // 红黑树(有序)
std::unordered_set<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值