零、版本
0.1 版本区别
- C++ 版本关键知识点详细介绍
- C++各版本的关键知识点列举
0.2 C++ 11
C++11特性(详细版)
C++11新特性总结
【C++基础】C++11新特性汇总介绍(超详细+代码例子)
都什么年代了,还不会C++的Lambda函数?
重学C++笔记之(十六)探讨C++11新标准
C++11——新特性超详细总结
0.3 优秀笔记
一、基本使用
1. 通过main(agrv)来传递参数,调用主函数
一般main函数的函数列表写法为
int main(int argc, char** argv)
其中:
-
argc是argument count 的缩写,表示外部输入的参数个数;
-
argv[ ]是argument vector 的缩写,表示传入的参数序列或指针。
- argv[0]:指向本项目的exe文件,即存储着exe文件的地址
- argv[n>0]:可以在项目属性->调试->命令参数中输入,以空格为间隔。在主题程序中则可以通过
变量=argv[n]
来实现赋值。
3. argv是指向指针的指针,main函数的第二个参数char *argv[]也可以替换为 char ** argv ,两者是等价的。
2.数据处理
- 基础数据类型如char、bool
- 数组、字符串、string
- 结构、共用体、枚举
- static_cast:基本数据类型之间的转换,以及具有继承关系的类之间的转换
- dynamic_cast:具有多态性的类之间的转换,即在继承关系中进行安全的向下转换。
- const_cast:移除变量的const或volatile属性。
- reinterpret_cast:最危险的类型转换方式,用于将一个指针或引用转换为完全不相关的类型。不做任何检查,全屏程序员的判断。
3. const和constexpr
深入了解 C++ 中的 constexpr 关键字
C++中的const和constexpr关键字详解:顶层与底层const以及常量表达式
const用于定义常量类型
- 可以应用于变量、指针和函数参数
- 修饰指针时有常量指针和指针常量的区别
- 只保证对象的值不可变,但不要求在编译时确定。const对象可以在运行时初始化。
constexpr是在编译时求值的常量。
- 可以用于数组大小、枚举值、模板参数等需要常量表达式的地方
- 不仅可以应用于变量,还可以应用于函数
- 仅要求对象的值不可变,而且要求在编译时确定。constexpr对象必须在编译时初始化。
4.异常处理
- 异常处理实例
- 标准异常类
- 自定义异常类
异常处理涉及三个主要部分:
- 抛出(Throwing): 当程序检测到错误条件时,通过 throw 关键字抛出一个异常。
- 捕获(Catching): 使用 try 和 catch 语句捕获异常,并执行相应的处理代码。
- 处理(Handling): 在 catch 代码块中处理异常。
基本语法:使用 try 块包围可能抛出异常的代码,然后使用 catch 块捕获和处理异常。可以有多个 catch 块,以捕获不同类型的异常。
try {
// 可能会抛出异常的代码
throw ……;
} catch (const std::exception& e) {
// 异常处理代码
} catch (...) {
// 捕获所有其他类型的异常
}
5.命名空间
命名空间【C++】(超详细)
C++ | 什么是命名空间?命名空间的详细讲解
6.宏定义
7.结构体struct和共用体union
C++ 之结构体与共用体
C 或 C++ 语言union 共用体
8.随机函数
9.string类
10.函数使用
重学C++笔记之(五)函数的使用
重学C++笔记之(六)函数探幽
- 函数指针
- 函数重载
- 函数模板
二、输入输出
1.输入输出方式
C++标准输入输出详细介绍
重学C++笔记之(十五)输入、输出和文件
2.文件操作
三、进阶使用
涉及c++三大特性:封装、继承、多态。
重学C++笔记之(八)对象和类
重学C++笔记之(九)使用类
重学C++笔记之(十一)类继承
1.类的构造
- 拷贝构造函数详解:理解和运用
- 调用时机
- 深、浅拷贝
- C++ 构造函数初始化列表详解
- 初始化列表
class MyClass {
public:
// Constructor with initialization list
MyClass(int a, double b, char c) :
num(a),
pi(b),
letter(c)
{
// Constructor body
}
};
- C++ 中的
virtual
关键字详解- 虚函数表和虚函数指针
- 用法及场景
2.this指针调用
3.重载和重写
C++ 中的重载(Overloading)和重写(Overriding)
4.友元
四、stl库
还不会STL???【C++】标准模板库(STL):万字长文,不看后悔,适合小白,快速上手,函数全盘点!
- 常用容器的使用及其函数
- 常用容器总结
- 常用算法总结
C++ - STL标准库
深入了解 C++ STL:容器、算法和迭代器
4.1 基础数据结构
主要有以下数据结构:
- vector:动态数组
- list:双向链表
- deque:双端队列
- set:集合
- unordered_set
- map:映射,键值对
- unordered_map
pair与tuple
当需要使用2个或2个以上元素时,可以使用tuple,类似于struct结构
C++中的pair和tuple的基本用法总结
- 创建、初始化
- 使用
4.2 基础函数
4.3 算法
C++头文件< algorithm> 中的函数功能详解
C++标准模板库(STL)算法:<algorithm>
algorithm头文件函数全集——史上最全,最贴心
主要有三种算法:
- sort:对容器中的元素进行排序
- find:在容器中查找指定元素
- accumulate:对容器中的元素进行累积操作
- C++中的sort算法详解
- 基本使用
- 自定义排序规则
- C++中的std::find_if函数详解
- 函数原型
- 示例
4.4 进阶数据结构
五、其他库
1.numeric
C/C++标准库之numeric
定义了C++ STL标准中的基础性的数值算法
- accumulate:以init为初值,对迭代器给出的值序列做累加,返回累加结果值
- adjacent_difference:对输入序列,计算相邻两项的差值(后一个减前一个元素),写入到输出序列(result)中
- inner_product:计算两个输入序列的内积
- partial_sum:计算局部累加和(每次都加上前面的所有元素),计算结果放入result中
- iota:向序列中写入以val为初值的连续值序列
2.ctime
C/C++中的ctime用法总结
四个时间的数据类型
- struct tm:自1900年至今经过的时间
- clock_t:表示时钟的滴答,可以用ticks 表示。实际是long类型
- time_t:从1900年1月1日0点UTC时间开始的时间, 实际是一个long类型。单位秒
- size_t:size_t类型很多地方都可以使用,实际上是一个unsigned int类型。
五个时间转换函数:用于上面几种类型之间的互相转换
- asctime、ctime、gmtime、localtime、strftime、mktime
时间操作函数:
- time():获取当地时间,返回time_t类型。
- clock():获取时钟的clicks,返回clock_t类型
- difftime():获取时间差的函数,返回double类型。其实可以直接做减法