C++模板初阶与STL初探


博主名称:deM0one ⭐️C++专栏: C++

文章目录

  • C++模板初阶:内存管理收尾、模板与STL初探
    • 一、C/C++程序内存区域划分
      • [1.1 内存区域总览](#1.1 内存区域总览)
      • [1.2 各区域特点与使用场景](#1.2 各区域特点与使用场景)
    • [二、动态内存管理:malloc/free vs new/delete](#二、动态内存管理:malloc/free vs new/delete)
      • [2.1 共同点](#2.1 共同点)
      • [2.2 六大核心区别](#2.2 六大核心区别)
      • [2.3 operator new 与 operator delete 的底层用法](#2.3 operator new 与 operator delete 的底层用法)
      • [2.4 内存池与池化技术](#2.4 内存池与池化技术)
    • 三、模板初阶:泛型编程的利器
      • [3.1 模板的概念与分类](#3.1 模板的概念与分类)
      • [3.2 函数模板](#3.2 函数模板)
      • [3.3 类模板](#3.3 类模板)
    • 四、STL浅讲
      • [4.1 STL 概述](#4.1 STL 概述)
    • [STL(standard template libaray-标准模板库):是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架](#STL(standard template libaray-标准模板库):是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架)
      • [4.2 STL 六大组件](#4.2 STL 六大组件)

C++模板初阶:内存管理收尾、模板与STL初探

今日学习:

1.malloc/free与new/delete对比区别

2.模板初阶,函数模板的用法、类模板的定义

3.STL概述,包含的组件

一、C/C++程序内存区域划分

1.1 内存区域总览

1.2 各区域特点与使用场景

  • 栈区:存放一次性数据,向下增长
  • 堆区:动态申请内存,向上增长
  • 数据段(静态区):存放全局数据、静态数据
  • 代码段:存放可执行代码与只读常量
  • 内存映射区:文件映射、动态库、匿名映射
  • 内核空间

二、动态内存管理:malloc/free vs new/delete

2.1 共同点

2.2 六大核心区别

  1. 本质不同:函数 vs 操作符
  2. 初始化:malloc不初始化,new可初始化
  3. 空间计算:malloc手动计算,new自动推导
  4. 返回值:malloc返回void*需强转,new返回对应类型指针
  5. 失败处理:malloc返回NULL,new抛异常
  6. 自定义类型:malloc/free不调用构造/析构,new/delete会调用

2.3 operator new 与 operator delete 的底层用法

operator new底层调用malloc函数申请空间,

2.4 内存池与池化技术

  • 内存池设计思想
  • 定位 new(Placement New)
  • 池化技术扩展:线程池、连接池

tips:内存池实际上就是堆额外划分的一块存放空间资源的池子供给那些需要频繁申请和释放空间的程序使用

三、模板初阶:泛型编程的利器

3.1 模板的概念与分类

  • 函数模板

  • 类模板

3.2 函数模板

  • 函数模板格式与定义
  • 模板实例化机制
    • 隐式实例化(推导实例化)
    • 显式实例化
  • 类型推导规则与隐式类型转换

3.3 类模板

  • 类模板定义与使用

  • 显式实例化示例

  • 手动扩容(异地扩容)实现

  • 类模板支持声明与定义分离

  • 但是不支持声明和定义分离在两个文件

四、STL浅讲

4.1 STL 概述

STL(standard template libaray-标准模板库):是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架

4.2 STL 六大组件

  • 容器(Containers):string、vector、list、deque、map、set、multimap、multiset、stack、queue
  • 算法(Algorithms):find、swap、reverse、sort、merge
  • 迭代器(Iterators):iterator、const_iterator、reverse_iterator
  • 仿函数(Functors):greater、less
  • 配接器(Adapters)
  • 空间配置器(Allocator)

任何的建议和问题欢迎指出,我们共同进步!

相关推荐
一嘴一个橘子15 分钟前
springmvc 全局异常处理【补充】
java
智购科技无人售货机工厂26 分钟前
2026自动售货机防拆机物理安全设计:从安全螺丝到结构互锁的工程实践~YH
android·网络·驱动开发·python·单片机·安全·云原生
Wang's Blog26 分钟前
Vibe Coding一人即团队系列35: 基于Claude Code的Spring Boot项目初始化实践
java·spring boot·后端
开开心心就好37 分钟前
电子教鞭工具支持画框写字插图片功能齐全
android·开发语言·前端·javascript·人工智能·pdf·html
Dovis(誓平步青云)44 分钟前
拍视频前先把镜头想清楚:做一个分镜取景辅助器
android·java·服务器·javascript·人工智能
AI人工智能+电脑小能手1 小时前
大白话说Java设计模式-45-解释器模式(源码剖析篇)
java·设计模式·解释器模式·源码分析·pattern·spel·javacc
执子星海1 小时前
Registry Win32 API详解
c++·windows·microsoft·visualstudio·微软
吴声子夜歌1 小时前
Java——开发中通用的方法和准则(二)
java·开发语言·php
袁震1 小时前
HarmonyOS 应用包体积优化与上架自检实战:从 76.2MB 到 3.6MB
java·华为·性能优化·harmonyos
江屿风1 小时前
C++OJ题经验总结(竞赛)5
开发语言·c++