![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c/c++知识二次稳固
踏过山河,踏过海
爱情来了,就好好珍惜;爱情走了,就好好生活…
展开
-
warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失原创 2024-07-18 09:47:17 · 29 阅读 · 0 评论 -
clock时钟周期
clock时钟周期原创 2024-07-01 11:10:48 · 229 阅读 · 0 评论 -
提问cpp之编译单元
在头文件中直接定义全局变量(如int a;)会引起多重定义的问题。这是因为当多个.cpp文件包含同一个头文件时,每个.cpp文件都会有一个a的定义。当这些.cpp文件被编译成对象文件后,链接器在尝试将它们链接成一个可执行文件时,会发现有多个a的定义,这违反了C/C++中关于一个程序内全局标识符(如变量、函数等)应有且只有一个定义的规则(One Definition Rule, ODR)。为了解决这个问题,通常在头文件中使用extern关键字来声明全局变量而不是定义它。如extern int a;原创 2024-04-10 02:09:01 · 722 阅读 · 0 评论 -
c语言中<string.h>的strstr与strtok函数
c语言中的strstr与strtok函数原创 2024-04-09 16:27:24 · 294 阅读 · 0 评论 -
c++虚函数表中的内存布局
c++虚函数表中的内存布局原创 2024-04-07 10:13:10 · 333 阅读 · 0 评论 -
“You have to define _USE_MATH_DEFINES in the compiler settings!“与xxx已经在 xxx.obj 中定义
c++报错:1."You have to define _USE_MATH_DEFINES in the compiler settings!"与2.xxx已经在 xxx.obj 中定义原创 2024-03-13 11:29:06 · 422 阅读 · 0 评论 -
关于c++的protected关键字
关于c++的protected关键字原创 2024-03-12 23:36:04 · 1946 阅读 · 0 评论 -
纯cpp如何模拟qt的信号与槽
纯cpp如何模拟qt的信号与槽原创 2023-11-28 23:31:39 · 717 阅读 · 1 评论 -
集群服务器
集群服务器原创 2023-10-05 15:05:25 · 1362 阅读 · 1 评论 -
CMakeList.txt
复习一下CMakeList.txt的写法,以下面的一个CMakeList.txt为例。原创 2023-09-08 00:14:25 · 748 阅读 · 0 评论 -
关于右值引用与完美转发(还加入了一些补充,涉及到cpp对象的优化)
关于右值引用与完美转发原创 2023-09-04 16:35:23 · 122 阅读 · 2 评论 -
使用cmake,将github上的某一个库进行集成到vs2022上
使用cmake,将github上的某一个库进行集成到vs2022上原创 2023-09-04 13:25:13 · 1042 阅读 · 0 评论 -
c语言查漏补缺
输出结果是:1,这个很好理解,数组名即数组的首地址,(a+1)等价于a[1],然后取ptr-1的值,则是a[0]原创 2023-06-29 00:59:06 · 213 阅读 · 1 评论 -
在vscode调试c++代码报错
在vscode调试c++代码报错原创 2023-05-18 23:27:12 · 3473 阅读 · 2 评论 -
\r与\n详解
在 C 语言中,回车符可以用 “\r” 来表示,换行符可以用 “\n” 来表示。另外,C 语言中也提供了特殊字符序列来表示其他一些控制字符,如制表符、响铃符等。需要注意的是,在使用特殊字符序列时,需要特别注意不同操作系统之间的差异,以确保程序在不同平台上都能够正确地解析和处理。原创 2023-04-18 21:21:09 · 3916 阅读 · 0 评论 -
sprintf格式化写入
【代码】sprintf格式化写入。原创 2023-03-27 11:32:10 · 64 阅读 · 0 评论 -
【C++】C++中substr的用法
【C++】C++中substr的用法转载 2023-03-26 16:11:01 · 89 阅读 · 0 评论 -
c/c++中:如果只告诉了行,没告诉列,且每行的数据个数是不一样的___这种情况应该采用的输入数据的方法:(c/c++一次输入多行)
c/c++中:如果只告诉了行,没告诉列,且每行的数据个数是不一样的___这种情况应该采用的输入数据的方法:(c/c++一次输入多行)原创 2023-03-25 01:23:53 · 76 阅读 · 0 评论 -
C++11中Lambda新特性
默认情况下,对于以值传递方式引入的外部变量,不允许在lambda表达式内部修改它们的值(可以理解为这部分变量都是const常量)。该函数体内除了可以使用指定传递进来的参数之外,还可以使用指定的外部变量以及全局范围内的所有全局变量。如果lambda函数体内只有一个return语句,或者该函数返回void,则编译器可以自行推断出返回值类型,此情况下可以直接省略"->返回值类型"。在方括号内部,可以注明当前lambda函数的函数体中可以使用哪些“外部变量”。和普通函数的定义一样,lambda匿名函数也可以。原创 2023-03-15 15:33:26 · 1047 阅读 · 0 评论 -
c++智能指针有没有内存泄露的情况
上述代码中,parent有一个shared_ptr类型的成员指向孩子,而child也有一个shared_ptr类型的成员指向父亲。然后在创建孩子和父亲对象时也使用了智能指针c和p,随后将c和p分别又赋值给child的智能指针成员parent和parent的智能指针成员child。,weak_ptr的构造函数不会修改引用计数的值,从而不会对对象的内存进行管理,其类似一个普通指针,但是不会指向引用计数的共享内存,但是可以检测到所管理的对象是否已经被释放,从而避免非法访问。2.智能指针的内存泄漏如何解决?原创 2023-03-12 23:58:02 · 659 阅读 · 0 评论 -
说说shared_ptr“线程安全性,原理”
在多线程的编译环境中,调用不同shared_ptr实例的成员函数是不需要额外的同步手段的,即使这些shared_ptr拥有的是同样的对象。,将thread_fcn中的第一行代码的注释去掉之后,不管是使用global_instance,还是使用local,同一个shared_ptr对象是线程安全的,但是,如果是多个线程对同一个shared_ptr对象进行。不管是相同的shared_ptr对象,还是不同的shared_ptr对象,都需要加锁保护。这就是典型的非线程安全的场景,最后的结果是未定的,原创 2023-03-12 19:53:54 · 574 阅读 · 0 评论 -
C++中的智能指针有哪些?分别解决的问题以及区别?
可以看到fun函数中pa,pb之间互相引用,两个资源的引用计数为2,当要跳出函数时,智能指针pa,pb析构时两个资源引用计数会减一,但是两者引用计数还是为1,导致跳出函数时资源没有被释放(AB的析构函数没有被调用),如果把其中一个改为weak_ptr就可以了,我们把类A里面的shared_ptrpb_;运行结果如下,这样的话,资源B的引用开始就只有1,当pb析构时,B的计数变为0,B得到释放,B释放的同时也会使A的计数减一,同时pa析构时使A的计数减一,那么A的计数为0,A得到释放。原创 2023-03-10 16:10:57 · 1312 阅读 · 0 评论 -
STL的空间配置器(allocator)
二级配置器主要是考虑小块内存空间而设计的(为了最大化解决内存碎片问题,进而提升效率),采用链表free_list来维护内存池(memory pool),free_list通过union结构实现,空闲的内存块互相挂接在一块,内存块一旦被使用,则被从链表中剔除,易于维护。(3)堆空间分配:程序在运行期间,通过在堆空间上为数据分配存储空间,通过malloc和new创建的对象都是从堆空间分配内存,这类空间需要程序员自己来管理,必须通过free()或者是delete()函数对堆空间进行释放,否则会造成内存溢出。原创 2023-03-10 00:53:19 · 682 阅读 · 0 评论 -
【c++】什么库用到了移动构造函数
C++11中新增了移动构造函数。与拷贝类似,移动也使用一个对象的值设置另一个对象的值。但是,又与拷贝不同的是,移动实现的是对象值真实的转移(源对象到目的对象):源对象将丢失其内容,其内容将被目的对象占有。移动操作的发生的时候,是当移动值的对象是未命名的对象的时候。这里未命名的对象就是那些临时变量,甚至都不会有名称。“典型的未命名对象就是函数的返回值或者类型转换的对象。” 使用临时对象的值初始化另一个对象值,不会要求对对象的复制:因为临时对象不会有其它使用,因而,它的值可以被移动到目的对象。做到这些,原创 2023-03-06 11:18:40 · 168 阅读 · 0 评论 -
unordered_map<string,int> hash;定义在全局就会报错的原因
unordered_map hash;定义在全局就会报错的原因原创 2023-03-05 00:44:43 · 265 阅读 · 0 评论 -
简述C++中内存对齐的使用场景
答:内存对齐应用于三种数据类型中:struct/class/unionstruct/class/union内存对齐原则有四个:1.数据成员对齐规则:结构(struct)或联合(union)的数据成员,第一个数据成员放在offset为0的地方,以后每个数据成员存储的起始位置要从该成员大小或者成员的子成员大小的整数倍开始。2.结构体作为成员:如果一个结构里有某些结构体成员,则结构体成员要从其内部"最宽基本类型成员"的整数倍地址开始存储。(struct a里存有struct b,b里有char,int,原创 2023-02-23 10:46:04 · 359 阅读 · 2 评论 -
shell脚本中的printf
shell脚本中的printf与c/c++中的printf差不多eg:printf "%10d.\n" 123 # 占10位,是右对齐printf "%-10.2f.\n" 123.123321 # 占10位,保留2位小数,是左对齐printf "My name is %s\n" "wxn" # 格式化输出字符串printf "%d * %d = %d\n" 2 3 `expr 2 \* 3` # 表达式的值作为参数输出结果 123.123.12 .My nam原创 2023-02-04 12:25:08 · 420 阅读 · 0 评论 -
c++树结构的遍历,前序遍历[等价于dfs],中序遍历,后序遍历,bfs
c++树结构的遍历,前序遍历[等价于dfs],中序遍历,后序遍历,bfs原创 2022-09-23 23:36:50 · 262 阅读 · 1 评论 -
C++操作符重载入门到提高
C++操作符重载入门到提高原创 2022-09-23 20:05:50 · 201 阅读 · 0 评论 -
c++多线程
c++多线程原创 2022-09-23 17:55:04 · 631 阅读 · 0 评论 -
c++list容器
c++list容器原创 2022-09-20 19:43:59 · 165 阅读 · 0 评论 -
c++仿函数
class MyAdd //仿函数{public://本质就是成员函数 函数名叫operator() int operator()(int a,int b){ cout原创 2022-09-20 19:08:28 · 131 阅读 · 0 评论 -
c++string容器字符串查找替换、比较、提取、插入和删除以及string和c风格的字符串的转换
c++string容器字符串查找替换 c++string容器字符串的比较 c++string容器字符串的提取 c++string容器字符串的插入和删除 string和c风格的字符串的转换原创 2022-09-20 12:28:30 · 395 阅读 · 0 评论 -
c++string容器字符串的拼接
c++string容器字符串的拼接原创 2022-09-19 00:02:47 · 193 阅读 · 0 评论 -
c++string容器字符串的存取
c++string容器字符串的存取1.char& operator[](int n);//通过[]方式取字符2.char& at(int n);//通过at方式获取字符原创 2022-09-19 00:00:38 · 233 阅读 · 0 评论 -
c++string容器(assign的用法)
c++string容器(assign的用法)原创 2022-09-18 20:44:55 · 329 阅读 · 0 评论 -
c++迭代器STL中的vector简单概述
c++迭代器STL中的vector简单概述 1.c++迭代器的位置 2.STL中for_each的使用 3.STL中容器嵌套容器原创 2022-09-18 20:05:13 · 432 阅读 · 1 评论 -
c++中的cin总结
c++中的cin总结 1.除了普通的cin>>,还可以获取一行,eg: 2.cin.ignore忽略 缓冲区的前n个字符 3.cin.putback放回缓存区 4.cin.peek偷窥原创 2022-09-18 19:54:29 · 143 阅读 · 2 评论 -
c++标准异常
c++标准异常原创 2022-09-18 12:10:22 · 107 阅读 · 0 评论 -
c++异常中的栈解旋
c++异常中的栈解旋原创 2022-09-18 10:35:52 · 157 阅读 · 0 评论