随笔分类 - Cpp
摘要:一、浮点数精度 Float 为单精度,内存中占 4 个字节,有效数位是 7 位。 double为 双精度,占 8 个字节,有效数位是 16 位。 二、常见错误 1. 不能存储全部有效数字 #include <iostream> int main() { float f{ 0.123456789f }
阅读全文
摘要:CPU 访问内存时需要的是地址,而不是变量名和函数名!变量名和函数名只是地址的一种助记符,当源文件被编译和链接成可执行程序后,它们都会被替换成地址。编译和链接过程的一项重要任务就是找到这些名称所对应的地址。 变量名表示的是数据本身,而函数名、字符串名和数组名表示的是代码块或数据块的首地址。 指针变量
阅读全文
摘要:一、引子 std::vector<bool> 经常应用在leetcode刷题中。 但是effective stl 不建议使用std::vector<bool>,原因是: 严格意义上讲,vector<bool> 并不是一个 STL 容器; vector<bool> 底层存储的并不是 bool 类型值。
阅读全文
摘要:指针和数组之间的替换 : 一维数组和指针: 数组名是数组的首地址 数组名是一个常指针 不可修改 可以对指针操作来访问元素 访问数组的方式:1.直接访问数组a[5]; 2.使用指针*p 等价于a[0]*(p+1)等价于a[1] 3.修改数组的值a[5]=10;*(p+5)=10; 实例: main()
阅读全文
摘要:位运算是指按二进制进行的运算。在系统软件中,常常需要处理二进制位的问题。 练习题:lc 191. 位1的个数 class Solution { // 开始给的无符号整数一定大于0,所以在while循环中n为true,每次取二进制n的末位,与1进行&运算,结果为1,说明该位为1,那么count++;n
阅读全文
摘要:一、在栈(Stack)上创建对象 Student是一个类,创建一个实例化对象: Student stu; 下面进行创建对象指针的操作(非必须): 上面代码中创建的对象 stu 在栈上分配内存,需要使用&获取它的地址: Student *pStu = &stu; pStu 是一个对象指针,它指向 St
阅读全文
摘要:在c++中,由于sort()函数默认提供的是由小到大的排序方式,因此有时候我们需要自定义排序规则来实现由大到小的排序。 一维vector<>排序 #include <bits/stdc++.h> using namespace std; void printvec(vector<int>& vec)
阅读全文
摘要:优先队列的概念 在优先队列中,队列中的每个元素都与某个优先级相关联,但是优先级在队列数据结构中不存在。 优先队列中具有最高优先级的元素将被首先删除,而队列遵循FIFO(先进先出)策略,这意味着先插入的元素将被首先删除。 如果存在多个具有相同优先级的元素,则将考虑该元素在队列中的顺序。 优先队列的语法
阅读全文
摘要:一、浅拷贝 Shallow copy: if the field is a pointer to some object, the address of the pointer is copied rather than its contents. (浅拷贝:数据域是一个指针,只拷指针的地址,而非指
阅读全文
摘要:本篇为b站的专题笔记,参考链接为 指针和数组的重难点解析 零、指针基础知识回顾 int a = 100; int *p_a = &a; 这里定义了一个int类型的变量a,它占用了地址为 0X11A(乱编的,仅示意)的内存存储了整数100。 在定义指针变量 p_a 的同时对它进行初始化,并将变量 a
阅读全文
摘要:Copy Constructions (拷贝构造) 拷贝构造:用一个对象初始化另一个同类对象 拷贝构造函数可以简写为 copy ctor,或者 cp ctor。在Unix/Linux中,拷贝文件的命令叫做 cp。 如何声明拷贝构造函数(copy ctor): Circle (Circle&); Ci
阅读全文
摘要:1. Developing generic function (设计泛型函数) 1.1. Steps (步骤) (1) To start with non-generic function (先设计/编写一个非泛型函数) (2) To debug and test it (调试/测试该函数) (3)
阅读全文
摘要:一、算法简介 双指针主要用于遍历数组,两个指针指向不同的元素,从而协同完成任务。也可以延伸到多个数组的多个指针。 若两个指针指向同一数组,遍历方向相同且不会相交,则也称为滑动窗口(两个指针包围的区域即为当前的窗口),经常用于区间搜索。 若两个指针指向同一数组,但是遍历方向相反,则可以用来进行搜索,待
阅读全文
摘要:记忆小技巧,看 ++ 的位置,如果 ++ 在前,就是先自加,再赋值,如果 ++ 在后,就是先赋值再自加。 #include<stdio.h> int main() { int i = 0; int j = ++i; printf("i=%d\tj=%d\n", i, j); return 0; }
阅读全文