
C++进阶
文章平均质量分 75
kankan_202104
这个作者很懒,什么都没留下…
展开
-
C++进阶⑧:从c++文件到生成exe文件经过哪些步骤、内置类型值传递效率最高、extern、* ( * (&arr+1)-1)、结构体(struct)的定义方式
1 从c++文件到生成exe文件经过哪些步骤C++ 文件到生成exe文件需要经过预处理、编译、汇编和链接几个步骤。预处理:在预处理阶段,编译器主要作加载头文件、宏替换、条件编译的作用。编译:在编译过程中,编译器主要作语法检查和词法分析。可以通过使用 -S选项来进行查看,该选项预处理之后的结果翻译成汇编代码。汇编:在汇编过程中,编译器把汇编代码转化为机器代码。链接:链接就是将目标文件、启动代码、库文件链接成可执行文件的过程。2 内置类型值传递效率最高 内置类型数据在传入函数时,使用值传递方原创 2021-12-15 18:39:58 · 2564 阅读 · 0 评论 -
C++进阶⑦:C++11之for遍历、STL:min_element、accumulate、strstr()、vector的at和[]、
1 for遍历新特性详细描述新特性可以遍历整个容器。for (int i = 0; i < vec.size(); ++i)等效于for (auto i : vec)①这种遍历方式是只读的但是对容器的遍历是只读的,也就是说遍历的值是不可修改的,如果需要修改其中元素,可以声明为auto &:②引用遍历for (auto e : vec)for (auto &e : vec)引用遍历有两个好处:1.可以像原始遍历那样修改原数组元素。2.用引用访问vec数组可以原创 2021-12-04 17:37:50 · 500 阅读 · 0 评论 -
指针问题汇总:指针与const、指向“数组/函数“”的指针、指针数组、函数返回“指针/指向数组的指针”、指针与“地址/引用”。
1 常量指针与指针常量const char *p1 = "hello";char *const p2 = "world";p1是指向常量的指针,叫做常量指针,不能修改常量,只能p1++移动指向不同字母。1. 对于变量,如int a,可以用指向变量的指针int* ptr,或指向常量的指针const int* ptr。2. 对于常量,如const int a,只能用指向常量的指针const int* ptr。p2本身是指针常量,可以指向非常量的字符。但是"hello"这样声明的字符串是存储在只原创 2021-12-04 15:27:03 · 519 阅读 · 0 评论 -
C++进阶⑥:关联结构的底层构造及常用方法的复杂度、set和map的区别、C++ACM模式输入和输出、pair中的iterator->first
关联结构的底层构造及常用方法的复杂度set:底层红黑树,二叉搜索树,所以是有序的,可以在logN时间通过中序遍历找到元素。插入、删除、查询复杂度:O(logN)unordered_set:底层:哈希表count平均时间复杂度是O(1),find的时间复杂度为O(1);map底层红黑树,自动排序,额外空间稍小插入、删除、查询复杂度:O(logN)unordered_map底层哈希表count平均时间复杂度是O(1),find的时间复杂度为O(1);set和map的区别set和map原创 2021-11-26 21:31:01 · 1428 阅读 · 0 评论 -
C++进阶⑤:运算符优先级、四种强制类型转换、accumulate、bit_xor()、string.size()返回无符号整数、int和unsigned的转换
1 运算符优先级运算符优先级初等运算符->单目运算符->算数运算符->关系运算符->逻辑运算符->条件运算符->赋值运算符->逗号运算符;原创 2021-11-07 22:45:06 · 1288 阅读 · 0 评论 -
C++进阶④:优先级队列存pair,根据pair.first大小建立先后次、赋值语句可以当做bool类型使用、非非a、map的count方法、map的初始化,[]和at/find区别
1 优先级队列存pair,根据pair.first大小建立先后次序priority_queue存pair<nums[i], i>,大顶堆根据pair.first判断大小,2 赋值语句可以当做bool类型使用当赋值后的变量值不为0,就将该语句视作true。int a = 3;if(a += 3) 可以执行if(a -= 3) 不能执行if(a = 100) 可以执行if(a = 0) 不能执行3 !!a!!符号可以把不等于0的数都变成true,放在数组[]括号里可以当作1使用原创 2021-10-29 10:02:57 · 1129 阅读 · 0 评论 -
C++进阶③:int类型和unsigned int类型、string/char比较和当做int、to_string、stoi和atoi、string的三种添加字符(串)方法
回溯法模板leetcode46-全排列void backtracking(参数){ if(终止条件){ 收集结果; return; } for(遍历集合元素){ 处理节点; 递归函数; 回溯操作; }原创 2021-10-12 14:57:46 · 889 阅读 · 0 评论 -
C++进阶②:#define与typedef、函数返回数组指针怎么写、各类型+1移动的字节数、位运算
1 #define与typedefdefine是直接替换#define a(x, y) x + ycout << a(3, 5) * a(3, 5) << endl;// 3 + 5 * 3 + 5 = 23#define a(x, y) (x+y)cout << a(3, 5) * a(3, 5) << endl;// (3 + 5) * (3 + 5) = 64typedef:类型别名typedef double* p;cout &原创 2021-09-28 17:40:24 · 356 阅读 · 0 评论 -
C++进阶① :sort和优先级队列的比较函数、greater、less、substr、reverse
1 sort函数sort函数1.sort函数包含在头文件为#include< algorithm>的c++标准库中,调用标准库里的排序方法可以实现对数据的排序,但是sort函数是如何实现的,我们不用考虑!2.sort函数的模板有三个参数:void sort (RandomAccessIterator first, RandomAccessIterator last, Compare comp);(1)第一个参数first:是要排序的数组的起始地址。(2)第二个参数last:是结束的地原创 2021-09-13 17:28:41 · 5873 阅读 · 2 评论