
C++
C++ 学习
胡小牧
岁月推动着年华,伴随着流水的脚步走过春夏秋冬。回想一路走来磕磕绊绊,感谢前辈们的无私奉献,本文重在共享,欢迎大家转载,评论,收藏,点赞,谢谢,如果您对文章存在疑问,或者和您的文章类似,请私信,----------------期待是心痛的根源,心不动,则不痛。
展开
-
静态代码检查提示: The scope of the variable ‘success‘ can be reduced.
当然 我们的可能不完全是这样,比如一些变量定义在try catch 外面了,等等之后的。这个修改的方法已经给出来了,就是定义的变量在循环外面了。我们的做法就是检查变量的的范围即可。原创 2024-09-10 10:29:27 · 473 阅读 · 0 评论 -
C++中-> 和 .
当有一个实际的对象或者对对象的引用时,使用 . 来访问该对象的非静态成员变量或调用其成员函数。当有一个指向类或结构体实例的指针时,需要使用 -> 来访问该指针所指向的对象的成员。-> 用于通过指针间接访问类或结构体实例的成员。. 用于直接访问类或结构体实例的成员。-> 和 . 的作用。结合demo 说明下。原创 2024-02-20 11:16:51 · 644 阅读 · 1 评论 -
C++ 遍历map的3中方法
> 用于通过指针间接访问类或结构体实例的成员. 用于直接访问类或结构体实例的成员。原创 2024-02-20 11:04:09 · 3325 阅读 · 0 评论 -
C++ tuple 的使用
tuple的作用C++ 中的std::tuple是标准库提供的一个容器,它可以存储任意数量、任意类型的元素。相比于只能存储两个元素的std::pairstd::tuple允许你创建包含更多元素的数据结构,并且这些元素可以是不同类型的。获取tuple的值来访问指定索引位置的元素。索引从0开始。例如:int intValue = std::get(myTuple);// 访问第一个元素(int 类型)// 访问第二个元素(std::string 类型)// 访问第三个元素(double 类型)原创 2024-02-08 17:40:14 · 1047 阅读 · 0 评论 -
C++ pair 的使用
是标准模板库 (STL) 提供的一个容器,它能够存储两个不同类型的数据作为一个整体,其中。:访问 pair 的第一个元素。:访问 pair 的第二个元素。原创 2024-02-08 17:27:49 · 1298 阅读 · 0 评论 -
C++ std::function
通用体现在function可以,包括普通函数指针、成员函数指针配合合适的实例指针、Lambda表达式以及bind产生的绑定表达式等,还有在运行的时候无需知道具体将要执行的是哪个函数或函数对象。是一个通用的函数对象包装器,它可以存储任何可调用对象(如函数、成员函数、Lambda表达式等)的引用或拷贝,并且可以像普通函数一样被调用,安全体现在function 后面的泛型,可以使用泛型设置不同的场景可调对象,还能保证类型的安全。总结它的出现体现的好处就是通用,还有类型安全。时确实需要包含头文件。原创 2024-02-08 16:15:44 · 674 阅读 · 0 评论 -
C++ .h文件类的调用
实际用不用,根据个人习惯即可,不使用using namespace在每次调用时都写出完整的命名空间路径。调用的时候首先要引入这个头文件 #include "util.h"cpp 里面实现,这里不使用using namespace。使用using namespace。把util.h 文件修改一层一层的。下面写一个util.h 文件里面。实现里面的方法效果也是一样的。原创 2024-02-08 11:29:31 · 1496 阅读 · 0 评论 -
C++ 函数与函数指针
函数指针是一种特殊的指针类型,它能够存储函数的地址。在C++中我们都知道,函数是一个可执行的代码快,如果要定义一个加法的函数指针。常用的是使用typedef。原创 2024-02-07 17:14:48 · 390 阅读 · 0 评论 -
C++ lambda [],[=] ,[&],[this] 的使用
对这些按值捕获的变量进行修改时,只会改变其副本的值,不会影响到原始的外部变量。Lambda 内部将获得一个指向外部变量的引用,所以对这些按引用捕获的变量进行修改时,会影响到原始的外部变量。按照值,按照引用, 一个可以修改,可以不可以修改,这个感觉本身上语法就有一些矛盾,[],[=] ,[&],[this] 都是捕获列表。[&] 的作用: 引用捕获所有外部作用域内的变量。大家看的挑选对自己有用的就行,不用刻意取较劲,如果把修改局部变量的++a 放开是会报错的。[=] 的作用: 按值捕获所有变量。原创 2024-02-07 14:56:19 · 2760 阅读 · 0 评论 -
C++ bool 布尔类型
在C++ 中 bool类型占用1个字节长度,bool 类型只有两个取值,true 和 false,true 表示“真”,false 表示“假”。需要注意的C++中使用cout 打印的时候是没有true 和 false 的 只有0和1 ,这里0表示假,非0表示真。原创 2024-02-07 09:48:32 · 1897 阅读 · 0 评论 -
C access 的作用
在C++中,access()函数主要用于检查文件的访问权限。这个函数并不是C++标准库的一部分所以使用的时候需要引入头文件#include __path:一个指向包含路径名的字符串的指针,该路径指向要检查权限的文件或目录。当这个值为0的时候表示文件具有所请求的所有权限 此时是成功返回。当这个值为-1的时候表示出错或者进程没有所请求的权限之一。R_OK:检查是否具有读取权限。W_OK:检查是否具有写入权限。X_OK:检查是否具有执行权限。F_OK:检查文件是否存在。返回的是一个int值。原创 2024-02-06 17:55:29 · 766 阅读 · 0 评论 -
C++ 可变参数模版 在typename或class后面带上省略号...
可接纳的模板参数个数是0个及以上的任意数量。C++ 可变参数模版作用。原创 2024-02-06 16:17:28 · 407 阅读 · 0 评论 -
C++ 中 catch (...) 3个小点点的作用
表示捕获所有类型的异常。这意味着无论抛出的是何种类型的异常,这个 catch 块都会尝试捕获并处理它。原创 2024-02-06 15:34:53 · 550 阅读 · 0 评论 -
C++ 值传递,引用传递,以及指针传递
通过传递变量地址间接访问和操作变量,提供了更灵活的内存访问方式,同时也支持改变原变量值。不复制变量,而是提供对原变量的直接访问,函数内部操作可改变原变量值。直接复制变量值给函数使用,函数内部不影响原变量。原创 2024-02-06 14:56:03 · 623 阅读 · 0 评论 -
C++ 中template 模版
C++模板(Templates)主要是编写泛型代码,在编译时为不同数据类型生成相应的函数或类实例,主要有函数模板,类模板。原创 2024-02-06 14:13:03 · 408 阅读 · 1 评论 -
C++ [[fallthrough]] 的作用
是一个属性指定符(attribute specifier),用于明确标记 switch 语句中的 fallthrough 行为是故意的。的作用在于消除歧义,它告诉编译器这个 fallthrough 是有意为之而非编程错误,这样编译器就不会对此发出警告或错误提示。语句,在某些编译器是报错的,在某些情况下我们需要不用break ,这个时候就需要使用。当一个 case 分支执行完毕后没有遇到。在 C++17 中,原创 2024-02-06 10:37:37 · 626 阅读 · 0 评论 -
C++ map查找制定的内容
如果查找的是map中的key,可以使用find,如果是value 可以使用find_if。find 查找制定的key(find不能查找map中的value)map 遍历使用auto简化下代码。1 遍历map 查找。原创 2023-12-03 17:12:30 · 815 阅读 · 0 评论 -
C++中在一个cpp文件中引用另外一个cpp文件的方法
创建1个func2.cpp 通过include 引入func1.cpp 来使用func1里面的方法(如果有单独的头文件,比如func1.h 可以通过#include“func1.h”)C++中在一个cpp文件中引用另外一个cpp文件 可以通过导入cpp文件或者.h文件来实现,类似python中的import 导入。原创 2023-11-23 17:12:53 · 6794 阅读 · 0 评论 -
C++ const的作用
2 常量指针:声明一个常量指针意味着它指向的内容不能被修改,但可以通过重新赋值使它指向另一个地址。3 常量成员函数:声明一个类的成员函数为常量意味着它不能修改对象的数据成员。关键字用于声明一个常量,被声明的常量不可以被修改。原创 2023-11-23 15:17:02 · 342 阅读 · 0 评论 -
typedef 的使用
typedef 是 C 和 C++ 中的一个关键字,用于给已有类型定义一个新的名字,与 class、struct、union和 enum声明不同,typedef声明不引入新类型;它们引入现有类型的新名称。原创 2023-11-23 11:22:22 · 261 阅读 · 0 评论 -
auto 的作用
在C++中auto是一个用于变量声明的关键字,它可以让编译器根据变量的初始化值来自动推导变量的类型。原创 2023-11-17 14:16:52 · 163 阅读 · 0 评论 -
C++ ->
注意这里不是直接的访问.是用于访问指向对象的指针的成员。C++ -> 是访问类或结构体对象的成员的运算符。如果是直接访问可以使用 .下面写一个demo对比下。原创 2023-11-02 19:06:17 · 221 阅读 · 0 评论 -
C++ 中 :的作用
1 :在类中定义 用于指定继承的父类或接口类。2 : 作为分隔符,比如在switch中中。这里主要是温习C++中继承的使用。原创 2023-11-01 17:32:36 · 169 阅读 · 0 评论 -
C++ 中 .(点号) 和 ::(作用域解析运算符)
C++ 中 .(点号) 和 ::(作用域解析运算符)都是用来访问类中成员的运算符。2 用于访问一个命名空间中的全局变量或函数。1 用于指定类的静态成员或成员函数。原创 2023-11-01 15:52:54 · 304 阅读 · 0 评论 -
C++ 单例模式
单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。原创 2023-10-31 16:56:47 · 616 阅读 · 0 评论 -
C++中setfill,setw,setbase,setprecision的作用
std::setfill:设置std::setw将填充什么样的字符 如:std::setfill('*'),默认情况下,填充字符是空格(’ ')C++中setfill,setw,setbase,setprecision 函数用来控制输出格式的操纵符。std::setprecision():控制输出流显示浮点数的数字个数,C++默认的流输出数值有效位是6。std::setw :需要填充多少个字符,默认填充的字符为' '空格。std::setbase(n):将输出数据转换为n进制。填充x ,设置总的长度为8。原创 2023-10-27 18:03:30 · 2746 阅读 · 0 评论 -
C++ stoi()函数的用法
注意:idx 这个可能是版本的问题,跟很多人写的不一样,不过看定义都是size_t 意思应该都是一样的st-要转换的字符串idx-一个整数的地址,用于存储处理的字符数base-数字基数 (如果不写默认是10 就是10进制)原创 2023-09-26 13:52:05 · 4716 阅读 · 0 评论 -
fopen,fputs,fgets,fclose
fgets 读取文件里面的内容 (里面有三个参数其中 第一个是一个char 型 数组用于存放读取的字符串。第二个表示读取 1-n个字符。in 表示是文件读入指针)fputs 往文件里面写内容(里面有2个参数其中第一个是一个char 型 数组用于存放读取的字符串,表示读取 1-n个字符。第二个表示是文件读入指针)fopen 打开文件可以设置一些参数具体如下。创建1个i1.txt 里面写入了aaaaaa。下面是创建一个文件夹并往里面写一些内容。下面使用fgets 读取里面的内容。fopen 是打开文件。原创 2023-06-28 14:30:29 · 442 阅读 · 0 评论 -
C++ 多线程 thread
头文件中主要包含两个内容:std:thread类和std:this_thread命名空间。使用的时候需要引入头文件 #includethread 是C++ 11 引入的。原创 2023-06-27 18:48:02 · 465 阅读 · 0 评论 -
C++ chrono
std::chrono::steady_clock: 不能设置的时钟,以统一速率运行。std::chrono::high_resolution_clock: 高分辨率时钟。std::chrono::system_clock: 依据系统当前时间。chrono 是c++ 11 引入的库 可以实现一些时间操作。使用的时候需要引入 #includechrono的时钟clock有三个方法。chrono 常用在耗时操作。原创 2023-06-27 17:42:10 · 1402 阅读 · 0 评论 -
C++ Sleep() 函数
Sleep 函数在windows 系统下 需要引入头文件 #include作用是让当前程序等待一段时间,Sleep 函数的单位是毫秒。注意在linux 系统下是sleep()原创 2023-06-27 13:45:06 · 1104 阅读 · 0 评论 -
C++ 字符串拼接
append(s1,2,4)设置2个参数,就是从第2位开始后面的四位拼接。例如下面的就是把adbc的前2位,也就是ab 拼接到s1 上面。例如 append(“s1”,3) 这就是把s1前三位拼接。下面的就是abcdefg从第二位开始后面四位拼接到s1上面。第一种方法直接是字符串之间相加。append 可以设置参数。第二种方法使用append。原创 2023-06-15 13:36:01 · 8044 阅读 · 0 评论 -
C++ find 的使用
可以理解过从头到尾的迭代,中查找30 ,如果成功返回30的迭代器,不成功就返回end的迭代器.3 容器内查找指定的元素,查找成功返回一个指向指定元素的迭代器,查找失败返回end迭代器。就是vector 中begin 和end 是向量中的首个和最后一个元素的引用,不是元素,1 查找指定的元素,默认是首次,若找到返回首次出现的坐标,找不到返回npos。find 是algorithm 库中的函数,所以使用的使用要引起该库。2 从指定的位置之后开始查找,类1 类似,如果想打印30的迭代器,可以打印指针。原创 2023-05-29 14:11:47 · 771 阅读 · 0 评论 -
C++中string::npos 的使用
string::npos 的意思:The constant is the largest representable value of type size_type. It is assuredly larger than max_size();就是find 查找匹配到的时候返回坐标,匹配不到的时候返回string::npos。大致意思 是一个常量, 是size_type类型,是一个非常大的值。一般使用find的时候查找不到的判断时候使用.它的作用:表示一个不存在的位置 ,2 find 的时候使用。原创 2023-05-26 16:31:56 · 1449 阅读 · 0 评论 -
C++ signed 与 unsigned
signed(有符号): 说明变量可以同时包含正值和负值。signed 与 unsigned 是数据类型修饰符。unsigned(无符号): 说明变量只能够保存正值。原创 2023-01-19 15:02:04 · 818 阅读 · 0 评论 -
C++ getline()使用
不完整为了避免这种情况我们可以使用getline。当输入的内容有空格的时候打印结果如下。将用户输入的内容读入到一个字符串中。原创 2023-01-19 13:51:27 · 321 阅读 · 0 评论 -
C++ cout 和 cin(输出和输入)
如果看着麻烦可以使用:using namespace std;这样就不用在写了具体如下。上面的代码写了很多std:: 这个是命名空间namespace。cin 是输入 类似python的input。cout 一般是打印的地方使用,是程序输出。使用的时候需要引入头文件iostream。原创 2023-01-19 13:28:22 · 606 阅读 · 0 评论 -
C++ #ifdef 和 #endif
endif 是和#ifdef 配套使用的,结尾的,不使用会报错的。#ifdef 是条件编译 检查定义的值是否有定义帮助。(就是检查#define定义的值)下一个demo 方便理解。原创 2023-01-19 11:30:32 · 788 阅读 · 0 评论 -
C++中 #define 与 #undef
比如下面使用undef 取消定义后在调用编译器会提示报错,原创 2023-01-19 11:20:10 · 730 阅读 · 0 评论 -
C++ #ifndef #define #endif 宏的作用
ifndef 是 if not define 的缩写 后面一般跟宏的名称。它们三个一般都是一起使用的,防止重复定义宏。endif 是 和ifndef 的缩写。define 表示定义一个xx 的宏。#ifndef xx 如果没有定义。#define xx 定义一个宏。原创 2023-01-18 13:14:21 · 442 阅读 · 1 评论