04 2023 档案
摘要:std::shared_ptr<widget> p(new widget()); auto p=std::make_shared<int>(widget); 两者的不同: 1.使用make_shared的时候widget只写了一次, 2.当遇到函数传参时,由于编译器执行顺序的不同,如果使用share
阅读全文
摘要:int a = 10; const int& b = a; a = 20; std::cout << b << std::endl;//输出为20,表示虽然b用const修饰不能直接修改b但是可以通过修改b的引用a来修改b int a1 = 10; constexpr int& b1 = a1;//
阅读全文
摘要:如在头文件声明: QLabel* label; 然后在源文件定义: label=new QLabel(this); 运行不会出错,但是当关闭程序时会报一个"w" variable的错误。这个w就是main.cpp里面定义的QMainWindow或者QWidget或者QDialog。这个时候需要先重新
阅读全文
摘要:=default 当有其他构造函数时,编译器不会生成默认构造函数。我们需要自己声明一个默认构造函数,此时加上default,效率会更高 可用于以下情况: 默认构造函数 拷贝构造函数 拷贝赋值运算符 移动构造函数 移动赋值运算符 析构函数 =delete 加上后,后续调用该函数就会报错。可以用来禁止隐
阅读全文
摘要:现在的计算机CPU一般都是多核,因此如果要充分利用CPU性能那么需要使用多线程编程来提升处理速度。 在c++中我们的main函数就是一个进程,实际上该进程不参与运算,而是有一个线程。 下面简单测试一个单线程和多线程的运行速度的差异: #include <iostream> #include <thr
阅读全文
摘要:解决方案有两个 (1)使用QString::fromLocal8Bit(const QByteArray &str) (2)直接在头文件加上 #pragma execution_character_set("utf-8") 此外将int类型转为QString的方式不是QString(num),这样转
阅读全文
摘要:当使用前缀和或者差分数组的时候,一般会遇到O(n2)的时间复杂度,此时我们可以使用树状数组来对时间复杂度进行优化。 树状数组主要是利用树形结构来优化我们前缀和或差分数组的计算复杂度使得O(n)的时间复杂度变为O(logn),使用总的时间复杂度减少到O(nlogn).。 构建树状数组的核心是lowbi
阅读全文
摘要:(来自<<程序员的自我修养>>) 静态链接: 地址和空间分配 符号决议 重定向
阅读全文
摘要:(来自<<程序员的自我修养>>) 编译过程可以分为六步: 扫描:源代码程序输入到扫描器, 语法分析:使用类似有限状态机的算法,将源代码的字符分割为一系列记号。大致可以:关键字、标识符、字面量(包含数字、字符串等)和特殊符号(加号、减号等)。 语义分析:编译器能分析的是静态语义即在编译器能够确定的语义
阅读全文
摘要:gcc编译程序的时候可以分为四个部分: (来自于<<程序员的自我修养>>) 预处理(Prepressing) 编译(Compilation) 汇编(Assembly) 链接(Linking) 预编译阶段: gcc -E hello.c -o hello.i 主要工作为 展开所有的宏定义,删除#def
阅读全文