随笔分类 -  C++杂记

数组与vector容器
摘要:数组存放在栈区,vector容器存放在堆区 定长容量较小时使用数组,此时数组性能较好,变长容量较大或则不确定容量时使用容器 常常习惯用迭代器来访问vector而非下标,但是当vector为二维时最好用下标来访问,因为这样可以自由的访问每个元素,而迭代器只能一行一行的访问。比如牛客的这道题:显然用下标 阅读全文
posted @ 2023-05-04 19:57 小凉拖 阅读(29) 评论(0) 推荐(0)
vector容器的初始化
摘要:个人认为容器最规范的初始化有三种: 1.花括号初始化: 1 vector<string>v1{"a","an"}; 适用于已知容器中元素的个数以及元素的值的情况 2.圆括号 1 vector<string>v1(10);//不推荐 2 //或 3 vector<string>v1(10,""); 适 阅读全文
posted @ 2023-04-25 20:50 小凉拖 阅读(145) 评论(0) 推荐(0)
使用cin和getline()输入字符串
摘要:相同点: 作为while的条件时,while终止条件均为:Ctrl z(或则Z)。执行本循环的条件为:换行符。 1 string s; 2 while (cin >> s) 3 { 4 cout << "you input is:" << endl; 5 cout << s << endl; 6 } 阅读全文
posted @ 2023-04-23 22:47 小凉拖 阅读(131) 评论(0) 推荐(0)
头文件
摘要:头文件中通常包含那些只被定义一次的实体,如类,结构体,const,constexper。 如果头文件中只定义一个类或则结构体,那么头文件的名字最好与类或结构体的名字相同 阅读全文
posted @ 2023-04-18 22:27 小凉拖 阅读(46) 评论(0) 推荐(0)
constexpr变量
摘要:(1)作用:1.告诉编译器后面的变量是一个常量。 constexpr int mf=20;//相当于const int mf=20; cosntexper int *q=nullptr//相当于int *const q=nullptr; 2.验证初值是否是一个常量表达式,不是的话会报错 conste 阅读全文
posted @ 2023-04-18 21:26 小凉拖 阅读(29) 评论(0) 推荐(0)
decltype的重点
摘要:1.如果表达式是一个变量,则返回该变量的类型,注意这个地方引用和引用所指向的对象是分开的: 1 int i=0; 2 int &r=i; 这里面如果使用decltype(i),则得到的是一个int类型变量,如果使用decltype(r),则得到的是一个int类型的引用而非int型变量。进一步的将如果 阅读全文
posted @ 2023-04-18 20:29 小凉拖 阅读(24) 评论(0) 推荐(0)
类型别名对于指针的影响
摘要:1 typedef char* pstring; 它的含义是pstring=char*,这里使得char和*永远的绑定在了一起,而有一条结论是const是对给定类型的修饰。下面我们来定义一个指针: 1 const pstring cstr=nullptr; const是对类型的修饰也就是对pstri 阅读全文
posted @ 2023-04-17 22:54 小凉拖 阅读(18) 评论(0) 推荐(0)
内存对齐
摘要:ILP32 指 int,long、point 是 32 位。 LP64 指 long、point 是 64 位。 LLP64 指 long long、point 是 64 位。 偏移量的概念: 偏移量就是程序的逻辑地址与段首的差值。 1、什么是内存对齐 还是用一个例子带出这个问题,看下面的小程序,理 阅读全文
posted @ 2023-04-17 14:44 小凉拖 阅读(160) 评论(0) 推荐(0)
常量指针 指针常量 const修饰的指针常量
摘要:常量指针表示常量的指针也就是说这个指针是用来指向常量的,它指向的值(这个值是常量值)不能变;指针常量表示它是指针这个类型下的常量,它就是一个常量,它的值不能变,也就是它指向的那个地址不能变。 常量指针指针指向的值不可以修改,指针的指向可以修改 指针常量指针指针的指向不可以修改,指针指向的值可以修改 阅读全文
posted @ 2023-04-14 20:05 小凉拖 阅读(51) 评论(0) 推荐(0)
常量的引用Vs非常量的引用(普通的引用)
摘要:先来解释下为什么没有引用常量,假设有int& const a;代表这个常量是一个引用类型下的常量,这显然是矛盾的。因为引用本身不是对象,则引用不可能有常量。 常量的引用可以直接赋予它字面值,非常量不可以。 1 int& r1 = 42;//错误,非常量引用的初始值必须为左值 2 const int& 阅读全文
posted @ 2023-04-14 17:30 小凉拖 阅读(294) 评论(0) 推荐(0)
堆区栈区
摘要:1.不要返回局部变量的地址 1 int* func() 2 { 3 int a = 10; 4 return &a; 5 } 6 int main() 7 { 8 int* p=func(); 9 cout << *p << endl; 10 cout << *p << endl; 11 retur 阅读全文
posted @ 2023-04-09 21:38 小凉拖 阅读(16) 评论(0) 推荐(0)
引用与指针
摘要:1.引用的几个错误用法: 1 #include<iostream> 2 using namespace std; 3 int main() { 4 int sum = 0, val = 1; 5 int &ref;//错误引用必须初始化 6 int &ref = 10;//错误引用必须与一个对象绑定 阅读全文
posted @ 2023-03-20 22:04 小凉拖 阅读(33) 评论(0) 推荐(0)
名字的作用域
摘要:名字的作用域分为:全局作用域和块作用域 如果一个名字(例如main,函数名)首次出现的位置的前几行离它最近的大括号是”后大括号“(”}“)则有全局作用域。它在整个程序的范围均可用。 如果一个名字(例如局部变量)首次出现的位置的前几行离它最近的大括号是”前大括号“(”{“)或则是关键词(例如for)则 阅读全文
posted @ 2023-03-14 22:49 小凉拖 阅读(42) 评论(0) 推荐(0)
变量的初始化,声明,定义
摘要:变量的初始化 变量的初始化分为显式初始化和默认初始化,显式初始化就是定义时给变量赋一个值,默认初始化就是在函数外定义时不给变量赋值,编译器自动赋初值。 显式初始化:int i=10; 变量的定义 变量的定义(int i; 当然定义的同时也可以赋值)的同时要为变量申请存储空间,变量的定义只能定义一次, 阅读全文
posted @ 2023-03-14 21:01 小凉拖 阅读(316) 评论(0) 推荐(0)
c++注释
摘要:注释分为单行注释和界定符对注释 单行注释:// 界定符对注释:/* */(用于注释多行) 注意:当界定符对注释多行时更规范的做写法是每一行前面都要有个星号 界定符对注释不可以嵌套,如果嵌套则嵌套部分后面全都被认为是程序: 阅读全文
posted @ 2023-03-03 12:53 小凉拖 阅读(33) 评论(0) 推荐(0)
返回值优化
摘要:无返回值优化 以前写的随笔提到了不要返回局部变量的指针 但为什么黑马程序的视频中主函数第一次打印还能正常的输出呢。事实上在执行 return 语句时系统是在内部自动创建了一个临时变量,然后将 return 要返回的那个值赋给这个临时变量。所以当被调函数运行结束后 return 后面的返回值真的就被释 阅读全文
posted @ 2022-11-29 15:51 小凉拖 阅读(96) 评论(0) 推荐(0)
引用之引用作为函数值的返回值
摘要:定义函数时指定的返回值类型实际上指定的就是这个临时变量的类型。上图表明这个临时变量是int型的引用,这个引用接收了变量a,然后主函数中这个临时变量将值传给了引用ref2,ref2成了a的别名 阅读全文
posted @ 2022-11-28 10:04 小凉拖 阅读(48) 评论(0) 推荐(0)
指针之函数指针
摘要:当一个函数中有一部分不能事先确定里面写什么的时候需要用到函数指针(zs和ls称为回调函数) 阅读全文
posted @ 2022-11-23 15:43 小凉拖 阅读(22) 评论(0) 推荐(0)
指针之多维数组
摘要: 阅读全文
posted @ 2022-11-23 15:26 小凉拖 阅读(14) 评论(0) 推荐(0)
指针之行指针
摘要: 阅读全文
posted @ 2022-11-23 15:25 小凉拖 阅读(16) 评论(0) 推荐(0)