c++
xiangjiaonigebanana
这个作者很懒,什么都没留下…
展开
-
全排列next_permutation
next_permutation1、 对字符串或者数组进行排序sort(str.begin(), str.end());2、利用while(next_permutation(str.begin(), str.end())进行全排列vector<string> permutation(string S) { vector<string> res; sort(S.begin(), S.end()); res.push_back(S);原创 2020-08-14 22:16:14 · 136 阅读 · 0 评论 -
输出结果对1000000007取模
输出结果对1000000007取模经常碰到的大数相乘,大数相加会溢出,题目里会要求对1000000007取模,具体操作:int a = 1000000006;int b = 1000000012; return ((a % 1000000007) * (b % 100000007)) % 1000000007; ...原创 2020-07-26 11:37:51 · 7722 阅读 · 0 评论 -
正则表达式(先挖个坑)
正则表达式原创 2020-06-13 14:06:37 · 123 阅读 · 0 评论 -
c++小知识点记录——整数
求整数假设给定了一个字符串,求整数(有可能很大,不用to_string())整数反转int reverse(int x) { long res = 0; while(x != 0) { res = res *10 + (x % 10); /// 这种写法同样适用于负数 x = x / 10 ; } return (res > max || res < min)?0:res;}*res = re原创 2020-06-12 11:36:40 · 106 阅读 · 0 评论 -
queue
queuequeue模板类的定义在# include < queue >头文件中。与stack模板类很相似,queue模板类也需要两个模板参数,一个是元素类型,一个容器类型,元素类型是必要的,容器类型是可选的,默认为deque类型。定义queue对象的示例代码如下:queue<int> q1;queue<double> q2;queue的基本操作有:入队,如例:q.push(x); 将x接到队列的末端。出队,如例:q.pop(); 弹出队列的第一个元素原创 2020-06-11 14:40:45 · 134 阅读 · 0 评论 -
基础类型(进制转换)
一、补码对于一个正数来说,其补码就是它本身对于一个负数来说,其补码等于它的绝对值取反+1(取反操作针对于二进制来说)代码:int a = -1;a = -a; // 1、取绝对值a = ~a; // 2、取反 (~ 取反操作符)a = a + 1; //3、 加1// 如果输出int型,依旧是-1cout << to_string(a); // "ffffffff"...原创 2020-06-08 17:22:22 · 138 阅读 · 0 评论 -
set —— multiset(有序,可重复)
multisetmultiset是库中一个非常有用的类型,它可以看成一个序列,插入一个数,删除一个数都能够在O(logn)的时间内完成,而且他能时刻保证序列中的数是有序的,而且序列中可以存在重复的数。#include<set>multiset<int> ms;ms.begin()返回一个迭代器,指向首元素ms.end()返回一个迭代器,指向尾元素ms.rbegin()返回一个迭代器,指向逆向首元素ms.rend()返回一个迭代器,指向原创 2020-05-13 21:56:55 · 1143 阅读 · 0 评论 -
库函数
sortsort函数用于C++中,对给定区间所有元素进行排序,默认为升序,也可进行降序排序。sort函数包含在头文件为#include的c++标准库中vector<string>vec;sort(v.begin(), v.end(), cmp); //修改排序方式sort(v.begin(), v.end(), cmp); //cmp函数可以自己定义static ...原创 2020-05-01 13:40:08 · 329 阅读 · 0 评论 -
STL中的map
定义unordered_map< 类型, 类型> mapname;头文件:#include<unordered_map>unordered_map<string,vector<string>> map;//遍历这个mapunordered_map<string,vector<string>>::itera...原创 2020-04-28 10:04:34 · 138 阅读 · 0 评论 -
当需要函数的返回值有多个时……
普通的函数只有一个返回值,但是,当碰到需要函数的返回值有多个时,可以有几种方法:形参传递引用(推荐!)void culculate(vector<char>& tasks,int &maxcount,int &maxtype)culculate(tasks,maxcount,maxtype);全局变量传递指针或者数组(仅适用于相同类型)传递...原创 2020-04-27 09:02:07 · 789 阅读 · 0 评论 -
int string相互转化
一、int转string (to_string)int a = 123;string b = to_string(a);//在vs2010中可能不可以会有多个重载函数的报错,此时可以用string b = to_ string(static_cast<_Longlong>(a));在vector或者deque中转成stringvector<int>vec(1...原创 2020-04-26 09:15:37 · 556 阅读 · 0 评论 -
c++小知识点记录——vector(含pair的用法)
一维vector初始化.可以利用数组来初始化vector int a[] = {9,2,3,5,6,8}; vector<int>vec(begin(a),end(a));二维vector初始化方式一:定义的同时初始化 vector<vector<int>>dp(m,vector<int>(n,1)); // 将dp初始化为m行...原创 2020-01-16 14:40:50 · 3986 阅读 · 0 评论 -
c++小知识点记录——string
@c++小知识点记录string 数组?链表?string可以直接在前面加字符串。string a = "123";a = "0" + a;cout << a; // a 输出为 0123,同时可以用下标索引两个vector拼接vector<int> vec1,vec2;vec1.insert(vec1.end(), vec2.begin(),...原创 2020-01-14 15:17:02 · 129 阅读 · 0 评论 -
typedef和#define
typedef和#define的区别#definetypedef①定义#define为宏定义,只是简单的字符串替换(注意加括号)只能给类型起别名②define只进行简单的字符串替换有一定的封装性③后面没有;后面有;④在预处理阶段处理在编译时处理②typedef int * INT1;#define INT2 int *...原创 2019-09-10 21:56:46 · 113 阅读 · 0 评论 -
inline内联函数
inline内联函数适用于:频繁调用的短小函数 (因为频繁调用会大量消耗栈空间)用来代替c语言中 表达式形式 的宏定义inline定义的类的内联函数,在使用时直接进行替换(像宏一样展开),没有了调用的开销,效率也很高。#include <stdio.h>//函数定义为inline即:内联函数inline char* dbtest(int a) { return (...原创 2019-09-10 22:05:53 · 122 阅读 · 0 评论 -
STL中 -- 容器
vector和list区别vectorlistvector相当于数组list相当于(双向)链表vector随机访问速度快不能进行随机访问,即不支持下标索引在内部插入删除效率低在内部插入删除操作方便stack,queue和deque区别stack(堆栈)queue(队列)deque(双端队列)存储结构顺序和链式顺序和...原创 2019-09-12 16:06:45 · 94 阅读 · 0 评论 -
i++和++i
i++和++i速度i++ 相当于i = i + 1;++i 相当于int j = i;j = j + 1;return j;++i自增后直接返回引用而i++要先定义一个临时变量,把值赋给临时变量,然后自增,返回临时变量...原创 2019-09-17 18:33:53 · 1234 阅读 · 0 评论 -
多继承(危害)、多重继承
多继承多继承是指一个子类继承多个父类,多继承对父类的个数没有限制,继承方式可以为:public、protect、private若不写继承方式,则默认为private继承多重继承1、B类从A类派生,C类从B类派生2、实例化时,会从上至下先调用父类的构造函数,再调用子类的构造函数,销毁该类时,会调用子类的析构函数,再调用父类的析构函数3、可以通过父类指针对直接子类或间接子类进行相应操作,...原创 2019-09-17 22:39:48 · 469 阅读 · 0 评论 -
构造函数、析构函数,静态成员函数、内联函数-- 虚函数
虚函数的实现如果一个类的内部有虚函数,那么编译器会在类的内部添加一个虚拟函数表指针(vptr),这个vptr指向一个虚拟函数表,表中存放着该类所有虚拟函数的入口地址,在每一次虚函数调用时,会去这个表中查找地址。构造函数为什么不能是虚函数① vptr存放在对象的内部空间,需要构造函数来完成初始化。但如果构造函数是虚函数,那么调用构造函数则需要去寻找vptr,但此时vptr还未初始化,无法调用...原创 2019-09-18 10:53:34 · 477 阅读 · 0 评论 -
const和宏
constconst的主要作用1、 欲阻止一个变量被改变,可以用const关键字,初始化以后就不能改变了2、 用const修饰形参,可以防止函数调用过程中对参数产生意外的修改3、 用const修饰指针来规定什么不可变( 指针常量、常量指针)const和宏的区别constdefine在编译阶段展开在预处理阶段展开在编译阶段会进行类型检查不做类型检...原创 2019-09-18 21:21:09 · 228 阅读 · 0 评论 -
指针常量与常量指针
指针常量与常量指针指针常量常量指针指针常量重点在常量,const修饰常量(const修饰p,即const p),在const前写指针*,所以指针常量就为:int * const p由于const修饰p → 因此p不能改变 → p是一个地址 → 地址不能改变 → 地址的指向不能改变。由于地址的指向不能改变,因此在声明的时候一定要给它赋初始值。一旦赋值,以后...原创 2019-09-10 20:34:27 · 92 阅读 · 0 评论