c++知识点
lzm_create
中等菜鸡!
展开
-
设计模式
常见的设计模式如下:单例模式: 单例模式主要解决一个全局使用的类频繁的创建和销毁的问题。C++的实现有两种,一种通过局部静态变量,利用其只初始化一次的特点,返回对象。另外一种,则是定义全局的指针,getInstance判断该指针是否为空,为空时才实例化对象工厂模式: 工厂模式主要解决接口选择的问题。该模式下定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,使其创建过程延迟到子类进行。优点:解耦,代码复用,更改功能容易。观察者模式: 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变原创 2020-10-28 09:52:47 · 88 阅读 · 0 评论 -
STL map/multimap容器用法
map 容器,又称键值对容器,即该容器的底层是以红黑树变体实现的,是典型的关联式容器。这意味着,map 容器中的元素可以分散存储在内存空间里,而不是必须存储在一整块连续的内存空间中。跟任意其它类型容器一样,它能够存放各种类型的对象。原创 2020-10-07 09:56:18 · 228 阅读 · 0 评论 -
dfs深度递归遍历解题模板
做题的时候常常碰到需要深度递归解决的问题,刚开始的时候觉得递归挺难,用多了会觉得好顺手,因为他解决繁杂的细琐工作,不要针对一个细节把代码行拉的贼长。但是关键是怎么可以快速并且正确的写出,是题解讨论的重点。首先解释一下递归函数。递归函数:就是当前处理的问题是什么,并且下一次在规模减小的情况下处理相同的问题。这里先给出一个比较清晰的DFS模板:dfs(){ // 第1步:检查是否被访问过,或者是否满足当前限制条件 // 第2步:检查是否满足返回结果条件 // 标记走过的路程原创 2020-09-14 19:36:05 · 283 阅读 · 0 评论 -
STL中map,unordered_map,multimap,unordered_mulitimap
map: #include < map >Mulitimap: #include < map >unordered_map: #include < unordered_map >unordered_mulitimap: #include < unordered_map >Map:一对一;有序( 自动按 key 升序 );可用 [ ] 赋值和取值;采用 红黑..原创 2020-08-29 21:29:16 · 206 阅读 · 0 评论 -
函数:fopen的使用方法
函数:fopen函数原型:FILE * fopen(const char * path,const char * mode);返回值:文件顺利打开后,指向该流的文件指针就会被返回。如果文件打开失败则返回NULL,并把错误代码存在errno中。一般而言,打开文件后会做一些文件读取或写入的动作,若打开文件失败,接下来的读写动作也无法顺利进行,所以一般在fopen()后作错误判断及处理。参数说明:参数path字符串包含欲打开的文件路径及文件名,参数mode字符串则代表着流形态。mode有下列几种形态字原创 2020-08-26 20:36:59 · 19752 阅读 · 0 评论 -
排序算法:快速排序,归并排序
#include <iostream>#include <algorithm>using namespace std;int partition(int low, int high, int arr[]) { int len = high-low; int base = arr[low]; while (low < high) { while (low < high&&arr[high] >= base) high--;原创 2020-08-24 09:26:28 · 180 阅读 · 0 评论 -
class和struct的区别
两种情况下的区别:1. C语言的struct和C++的class的区别2. C++中的struct和class的区别C语言的struct和C++的class的区别第一种两者的区别是明显的,C是过程化的,此时的struct只是一种数据变量,且内部不能定义成员函数,而class可以。//`cclass S{ int a; //合法 int b; //合法 void print(){//错误的,C语言中不可以,会编译出错 cout<<<"hello,wor原创 2020-08-22 17:48:35 · 788 阅读 · 0 评论 -
error C2780: “void std::sort(const _RanIt,const _RanIt)”: 应输入 2 个参数,却提供了 3 个
- 1.错误warning C4018: “<”: 有符号/无符号不匹配error C3867: “Solution::cmp”: 非标准语法;请使用 “&” 来创建指向成员的指针error C2672: “std::sort”: 未找到匹配的重载函数error C2780: “void std::sort(const _RanIt,const _RanIt)”: 应输入 2 个参数,却提供了 3 个note: 参见“std::sort”的声明1>已完成生成项目“Projec原创 2020-08-13 16:12:21 · 2262 阅读 · 0 评论 -
c++二叉树:层序,前,中,后 序遍历的解题模板
节点定义/*节点定义*/class Node {//节点定义public: int val; Node* left; Node* right; Node() {} Node(int _val) { val = _val; left = NULL;right = NULL; } Node(int _val, Node* _left, Node* _right) { val = _val; left = _left原创 2020-08-10 17:07:53 · 479 阅读 · 0 评论 -
c++中的:strlen()、sizeof()、size()、length()
char str[10]=“01234567”;int a=strlen(str); //a=8; 解释:strlen 计算字符串的长度,以结束符 0x00 为字符串结束。int b=sizeof(str); //而b=10; 解释: sizeof 计算的则是分配的数组 str[10] 所占的内存空间的大小,不受里面存储的内容改变。...原创 2020-05-17 21:41:17 · 280 阅读 · 0 评论 -
c++函数重载和重写
函数重载:C++允许在同一范围中声明几个功能类似的同名函数两个重载函数必须在下列一个或两个方面有所区别:函数的参数个数不同。函数的参数类型不同或者参数类型顺序不同,C++的这种编程机制给编程者极大的方便,不需要为功能相似、参数不同的函数选用不同的函数名,也增强了程序的可读性。举例 (1) void func1( int arg1); (2) void func1( double arg1); (3) void func1( int arg1, int arg2);原创 2020-07-17 10:43:33 · 5512 阅读 · 0 评论 -
c/c++各种输入读取的方法cin、cin.get()、cin.getline()、getline()、gets()、getchar()
cin、cin.get()、cin.getline()、getline()、gets()、getchar()cin>>功能一:接收单个数字、字符#include <iostream>using namespace std;int main(){ int a, b; char c, d; cin >> a >> b >> c >> d; return 0;}功能二:接受一个字符数组,遇“空格”、“Tab”原创 2020-07-02 17:58:58 · 656 阅读 · 1 评论 -
c++:stoi()和to_string()函数
C++中stoi函数作用: 将 n 进制的字符串转化为十进制用法1 stoi(字符串,起始位置,n进制(默认10进制)),将 n 进制的字符串转化为十进制stoi(str, 0, 2); //将字符串 str 从 0 位置之后的数字的 2 进制数,转换为十进制toi()函数如果传入的字符串s中含有不是数字的字符,则只会识别到从开头到第一个非法字符之前,如果第一个字符就是非法字符则会报错。 1 stoi(字符串,起始位置,n进制),将 n 进制的字符串转化为十进制23 示例:4 sto原创 2020-07-02 00:18:10 · 1315 阅读 · 0 评论 -
C++ 函数:accumulate()
该算法函数在numeric头文件中定义:#include<numeric>目前鄙人知道的有两个功能:1.求和;2.求连乘积直接举例说明:#include<iostream>#include<numeric>using namespace std;int main() {//功能一:求和 int list[10] = { 1,2,3,4,5,6,7,8,9,10 }; int sum= accumulate(list, list+10, 0) ; cou原创 2020-06-08 13:10:29 · 11345 阅读 · 1 评论