随笔分类 - C++
摘要:##说明 模板虽然通用性很强,但是不能直接使用,它只是一个框架;并且并不是万能的。(可以比喻成我们做PPT的时候) 泛型编程主要利用的技术就是模板。 C++提供两种模板机制:函数模板、类模板。 ##函数模板作用 建立一个通用函数,其函数返回值类型和形参类型可以不具体制定,用一个虚拟的类型来代表。 比
阅读全文
摘要:##动态多态需要满足的条件 有继承关系 子类要重写父类的虚函数(子函数重写的时候加不加virtual都可以)(加上virtual内存变为4个字节,指针的内存也是4个字节) 重写:函数的返回值类型、函数名、形参列表中所有内容需要相同 重载:函数名相同,参数不同 ##动态多态使用 父类的指针或引用指向子
阅读全文
摘要:C/C++开发 重要四部分:数据结构与算法 、计算机网络、操作系统、设计模式 数据结构:重点(字符串、二叉树、链表、堆、栈、队列、哈希;基本算法思路 解题思路:查找、排序、动态规划);推荐书籍《大话数据结构》、《算法》 、《剑指offer》 计算机网络:tcp/ip协议栈、原理、具体协议、arp、i
阅读全文
摘要:我还是见识短浅,学到现在为止,我并没有见过vector还可以用cin去进行输入的写法…… 例子: vector<int>v1,v2; // 开辟一维数组 v1.resize(100),v2.resize(100); for(int i=0;i<=6;i++) cin>>v1[i],cin>>v2[i
阅读全文
摘要:##区别 不存在空引用。引用必须连接到一块合法的内存。 一旦引用被初始化为一个对象,就不能被指向到另一个对象。指针可以在任何时候指向到另一个对象。 引用必须在创建时被初始化。指针可以在任何时间被初始化。 ##例子 #include<bits/stdc++.h> using namespace std
阅读全文
摘要:鉴于蓝桥杯,于是有了该文…… (这点也足够用了) ctrl + / 注释/取消注释 编译报错区如何打开 f11 编译并运行 ctrl+n 快速创建文件 ctrl+r 快速替换想要换的元素 ctrl+shift+a 调整格式;记得Astyle选GNU;tab with可以调while大括号缩进改为4
阅读全文
摘要:##getline int main() { // gets(s1); // getchar(); //gets(s2); string s; getline(cin,s); //只能读string,不能读char // 可以读空格 //scanf("%[^\n]",s1); // scanf("%
阅读全文
摘要:##内存管理 C: int *p = (int*) malloc(sizeof(int)*10); //分配10个int型的内存空间 free(p); //释放内存 C++: int *p = new int; //分配1个int型的内存空间 delete p; //释放内存 分配释放连续的数据:
阅读全文
摘要:快速幂 typedef long long ll; ll mod_pow(ll x,ll n,ll mod) { ll res=1; while(n>0) { if(n&1)//if(n%2==1) res=res*x%mod; x=x*x%mod;//把x平方 n>>=1;//n=n/2 舍去最后
阅读全文
摘要:c++利用了构造函数和析构函数解决对象的初始化和清理的问题,这两个函数将会被编译器自动调用,完成对象初始化和清理工作。 对象的初始化和清理工作是编译器强制要我们做的事情,因此如果我们不提供构造和析构,编译器会提供编译器提供的构造函数和析构函数是空实现。 ##构造函数和析构函数区别 构造函数:主要作用
阅读全文
摘要:专业名词 类中的属性和行为 统一称为 成员类中的 属性 称为成员属性/成员变量类中的 行文 称为成员函数/成员方法 封装的意义 封装意义一: 在设计类的时候,属性和行为写在一起,表现事物 语法: class 类名{ 访问权限: 属性 / 行为 }; 封装意义二: 类在设计时,可以把属性和行为放在不同
阅读全文
摘要:函数默认参数 1. 如果某个位置参数有默认值,那么从这个位置往后,从左向右,必须都要有默认值。 2. 如果函数声明有默认值,函数实现的时候就不能有默认参数。函数实现和声明只能一个有默认参数。 (我没事我什么要去写一个函数声明,我又不写在下面) ps:注意和python里面函数参数的区别。 函数的占位
阅读全文
摘要:我,今天才知道,之前做题写的取地址符&,原来,它是有名字的,它叫做——引用。服了。 应用的作用:给变量起别名 引用的语法: 数据类型 &别名 = 原名 原名对应的值和别名对应的值,可以一起改变,因为操作的是同一块内存。 ##正确用法 #include<iostream> using namespac
阅读全文
摘要:c++中利用new操作符再堆区开辟数据。堆区开辟的数据是手动开辟(new)和释放(delete)的语法:new 数据类型利用new创建的数据,会返回该数据对应的类型指针 存在的问题就是: 我是用clion写的,delete释放之后的那一块内存仍然输出,允许访问, 难道还是编译器问题, 总不能做的这么
阅读全文
摘要:32位操作系统下,不管什么数据类型,指针都是占4个字节的空间大小; 64位操作系统,占8个字节的空间大小。 指针 指针的作用:可以通过指针间接访问内存用指针来保存一个地址指针就是地址 #include<iostream> using namespace std; int main() { int a
阅读全文
摘要:思路: 创建.h的头文件和.cpp的源文件(不是主函数所在cpp)头文件中写函数声明源文件中写函数定义 注意: 这三个代码再codeblocks上不能用,编译器G++的问题? devc++ 难道也是?? 先越过这个,等下次换了Qt再来验证, 反正, vs和Linux是可以的。 主函数: #inclu
阅读全文
摘要:标识符:变量、常量 顺便复习一下范围: sizeof:统计数据类型所占内存大小。 short:2个字节 int:4个字节 long:windows 4个字节 linux64:8个字节 long long:8个字节 short < int <= long <= long long bool和char都
阅读全文
摘要:下面这两行代码表达的意思是一样的。 int* p,q; int *p,q;//一个指针类型p,一个int变量q 变量的值是内存的地址 指针变量的值是具有实际值的变量的地址 *访问指针的值所表示的地址上的变量 *p代表一个int整体 void dfs(int *p) { } 调用的时候 dfs(&x)
阅读全文
摘要:好多容器的用法都忘了 包括迭代器的使用 优先队列,sbr 一些新函数的用法
阅读全文
摘要:输入输出外挂: 适合类似莫队这样输入量比较大的情况 输入:利用fread去读取 inline char gc() //用fread读入加快读入速度,比一般read读入要快 { static char buf [100000],*p1=buf,*p2=buf; return p1==p2&&(p2=(
阅读全文