C++基本使用

零、版本

0.1 版本区别

  1. C++ 版本关键知识点详细介绍
    • C++各版本的关键知识点列举

0.2 C++ 11

C++11特性(详细版)
C++11新特性总结
【C++基础】C++11新特性汇总介绍(超详细+代码例子)
都什么年代了,还不会C++的Lambda函数?
重学C++笔记之(十六)探讨C++11新标准
C++11——新特性超详细总结

0.3 优秀笔记

重学C++笔记之总览目录

一、基本使用

1. 通过main(agrv)来传递参数,调用主函数

一般main函数的函数列表写法为

int main(int argc, char** argv)

其中:

  • argc是argument count 的缩写,表示外部输入的参数个数;

  • argv[ ]是argument vector 的缩写,表示传入的参数序列或指针。

    1. argv[0]:指向本项目的exe文件,即存储着exe文件的地址
    2. argv[n>0]:可以在项目属性->调试->命令参数中输入,以空格为间隔。在主题程序中则可以通过
    	变量=argv[n]
    

    来实现赋值。
    3. argv是指向指针的指针,main函数的第二个参数char *argv[]也可以替换为 char ** argv ,两者是等价的。

2.数据处理

重学C++笔记之(二)处理数据

  • 基础数据类型如char、bool

重学C++笔记之(三)复合类型

  • 数组、字符串、string
  • 结构、共用体、枚举

C++ 类型转换详解

  • static_cast:基本数据类型之间的转换,以及具有继承关系的类之间的转换
  • dynamic_cast:具有多态性的类之间的转换,即在继承关系中进行安全的向下转换。
  • const_cast:移除变量的const或volatile属性。
  • reinterpret_cast:最危险的类型转换方式,用于将一个指针或引用转换为完全不相关的类型。不做任何检查,全屏程序员的判断。

3. const和constexpr

深入了解 C++ 中的 constexpr 关键字
C++中的const和constexpr关键字详解:顶层与底层const以及常量表达式

const用于定义常量类型

  • 可以应用于变量、指针和函数参数
  • 修饰指针时有常量指针和指针常量的区别
  • 只保证对象的值不可变,但不要求在编译时确定。const对象可以在运行时初始化。

constexpr是在编译时求值的常量。

  • 可以用于数组大小、枚举值、模板参数等需要常量表达式的地方
  • 不仅可以应用于变量,还可以应用于函数
  • 仅要求对象的值不可变,而且要求在编译时确定。constexpr对象必须在编译时初始化。

4.异常处理

C++ 异常处理详解

  • 异常处理实例
  • 标准异常类
  • 自定义异常类

异常处理涉及三个主要部分:

  • 抛出(Throwing): 当程序检测到错误条件时,通过 throw 关键字抛出一个异常。
  • 捕获(Catching): 使用 try 和 catch 语句捕获异常,并执行相应的处理代码。
  • 处理(Handling): 在 catch 代码块中处理异常。

基本语法:使用 try 块包围可能抛出异常的代码,然后使用 catch 块捕获和处理异常。可以有多个 catch 块,以捕获不同类型的异常。

try {
    // 可能会抛出异常的代码
    throw ……;
} catch (const std::exception& e) {
    // 异常处理代码
} catch (...) {
    // 捕获所有其他类型的异常
}

5.命名空间

命名空间【C++】(超详细)
C++ | 什么是命名空间?命名空间的详细讲解

6.宏定义

深入理解C语言宏定义

7.结构体struct和共用体union

C++ 之结构体与共用体
C 或 C++ 语言union 共用体

8.随机函数

随机函数rand()、srand()与random的用法

9.string类

重学C++笔记之(十四)string类和标准模板库

10.函数使用

重学C++笔记之(五)函数的使用
重学C++笔记之(六)函数探幽

  • 函数指针
  • 函数重载
  • 函数模板

二、输入输出

1.输入输出方式

C++标准输入输出详细介绍
重学C++笔记之(十五)输入、输出和文件

2.文件操作

【C语言】文件操作
【C语言】文件操作函数

三、进阶使用

涉及c++三大特性:封装、继承、多态。
重学C++笔记之(八)对象和类
重学C++笔记之(九)使用类
重学C++笔记之(十一)类继承

1.类的构造

  1. 拷贝构造函数详解:理解和运用
    • 调用时机
    • 深、浅拷贝
  2. C++ 构造函数初始化列表详解
    • 初始化列表
class MyClass {
public:
    // Constructor with initialization list
    MyClass(int a, double b, char c) : 
        num(a), 
        pi(b), 
        letter(c) 
    {
        // Constructor body
    }
};
  1. C++ 中的 virtual 关键字详解
    • 虚函数表和虚函数指针
    • 用法及场景

2.this指针调用

C++ 中的 this 指针详解

3.重载和重写

C++ 中的重载(Overloading)和重写(Overriding)

4.友元

重学C++笔记之(十三)友元、异常和其他

四、stl库

还不会STL???【C++】标准模板库(STL):万字长文,不看后悔,适合小白,快速上手,函数全盘点!

  • 常用容器的使用及其函数

【C/C++】STL详解

  • 常用容器总结
  • 常用算法总结

C++ - STL标准库
深入了解 C++ STL:容器、算法和迭代器

4.1 基础数据结构

主要有以下数据结构:

  • vector:动态数组
  • list:双向链表
  • deque:双端队列
  • set:集合
    • unordered_set
  • map:映射,键值对
    • unordered_map

pair与tuple

深入了解C++中的std::pair

当需要使用2个或2个以上元素时,可以使用tuple,类似于struct结构
C++中的pair和tuple的基本用法总结

  • 创建、初始化
  • 使用

4.2 基础函数

vector的reserve并不会改变size的大小

4.3 算法

C++头文件< algorithm> 中的函数功能详解
C++标准模板库(STL)算法:<algorithm>
algorithm头文件函数全集——史上最全,最贴心

主要有三种算法:

  • sort:对容器中的元素进行排序
  • find:在容器中查找指定元素
  • accumulate:对容器中的元素进行累积操作
  1. C++中的sort算法详解
    • 基本使用
    • 自定义排序规则
  2. C++中的std::find_if函数详解
    • 函数原型
    • 示例

4.4 进阶数据结构

  1. 红黑树:
    红黑树(Red-Black Tree)算法详解

五、其他库

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类型。其实可以直接做减法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值