- 博客(71)
- 资源 (11)
- 收藏
- 关注
原创 C++ 标准库next_permutation函数
STL中next_permutation和prev_permutation:a,b,c三个字符所组成的序列有六个可能的排列组合:abc,acb,bac,bca,cab,cba。这些排列组合根据less-than操作符做字典顺序(lexicographical)的排序。也就是说,abc名列第一,因为每一个元素都小于其后的元素。acb是次一个排列组合,因为它是固定了a(序列内最小元素)之后所做的新组合。同样,那些固定b(序列中次小元素)而做的排列组合,在次序上将先于那些固定c而做的排列组合。以bac和bc.
2021-07-02 00:07:32
519
原创 滑动窗口技巧-子串问题
遇到⼦串问题,⾸先想到的就是滑动窗⼝技巧。 滑动窗⼝算法的抽象思想:int left = 0, right = 0; while (right < s.size()) { window.add(s[right]); right++; while (valid) { window.remove(s[left]); left++; } }力扣网址:https://leetcode-cn.com/probl
2021-04-24 21:19:01
406
原创 VS2019下安装EasyX解决“无法打开包括文件:“graphics.h”问题
EasyX官网自己下载,我用的2012版本https://easyx.cn/downloads/打开vs2019安装目录把下载的esayX解压包中include中文件放到vs目录下的include中去。把下载的esayX解压包中lib中除了amd64文件放到vs目录下的lib\x86中去。恭喜你安装完成可以使用啦把下载的amd64中的文件放到vs目录下的lib\x64中去...
2021-04-24 15:15:33
4789
原创 C++不同容器中lower_bound用法
lower_bound在vector中用法:#include<bits/stdc++.h> using namespace std; int main(){ vector <int >v;// vector <int >v(5);创建5个为0的容器; (5,1)创建5个为1的容器 for(int i=1;i<=5;i++) v.push_back(i); int pos=lower_bound(v.begin(),v.end(),2).
2021-04-22 12:51:49
1493
原创 位运算的技巧
对于任意整数 xx,令x=x&(x−1),该运算将 xx 的二进制表示的最后一个 1变成 0。因此,对 xx 重复该操作,直到 xx 变成 00,则操作次数即为 xx 的「一比特数」。
2021-03-07 16:12:11
282
转载 C++模板template <typename T>
这个是C++中的模板..template<typename T> 这个是定义模板的固定格式,规定了的..模板应该可以理解到它的意思吧.. 比如你想求2个int float 或double型变量的值,只需要定义这么一个函数就可以了,假如不用模板的话,你就必须针对每种类型都定义一个sum函数..int sum(int, int);float sum(float, float);double sum(double, double);1.因为T是一个模版实例化时才知道的类型,所以编译器更对T不知所
2021-02-03 16:40:22
954
原创 priority_queue<Type, Container, Functional>优先队列
priority_queue<Type, Container, Functional>Type就是数据类型,Container就是容器类型(Container必须是用数组实现的容器,比如vector,deque等等,但不能用 list。STL里面默认用的是vector),Functional就是比较的方式,当需要用自定义的数据类型时才需要传入这三个参数,使用基本数据类型时,只需要传入数据类型,默认是大顶堆//升序队列priority_queue <int,vector<...
2021-02-03 16:33:29
295
转载 C++不同类型变量存储区
在C++中,虚拟内存分为代码段、数据段、BSS段、堆区、文件映射区以及栈区六部分。代码段:包括只读存储区和文本区,其中只读存储区存储字符串常量,文本区存储程序的机器代码(二进制代码)。数据段:存储程序中已初始化的全局变量和静态变量 。bss 段:存储未初始化的全局变量和静态变量(局部+全局),以及所有被初始化为0的全局变量和静态变量。堆区:调用new/malloc函数时在堆区动态分配内存,同时需要调用delete/free来手动释放申请的内存。栈:使用栈空间存储函数的返回地址、参数、局部变...
2021-01-17 21:09:45
501
转载 C++类型转换和隐式类型转换
static_cast<type-id >( expression ) 用于数值类型之间的转换,也可以用于指针之间的转换,编译时已经确定好,效率高,但须要自己保证其安全性。(1)用于数值之间的转化, 可以在相关指针在void* 之间转换char a;int b = static_cast<int>(a);char c = static_cast<char>(b);char* pa = NULL;int* pb = static_cast<int*.
2021-01-14 23:05:16
328
原创 任何不会修改数据成员的函数都应该声明为const类型
任何不会修改数据成员的函数都应该声明为const类型。如果在编写const成员函数时,不慎修改了数据成员或调用其它非const成员函数,编译器将报错,会提高程序的健壮性。class Stack{public: void Push(int a); int Pop(); int GetCount() const; // const成员函数private: int num; int data[100];};int Stack::GetCount c.
2021-01-13 20:09:05
799
转载 __attribute__((constructor))、 __attribute__((destructor))
__attribute__可用于为函数或者数据声明赋属性值。给函数分配属性的主要目的是为了让编译程序可以优化处理。分配给函数的属性位于函数原型的声明中__attribute__((constructor)) 先于main()函数调用__attribute__((destructor))在main()函数后调用#include <stdio.h>#include <stdlib.h>static void before(void) __attribute__((cons
2021-01-13 20:01:22
221
转载 排序算法-快排
快速排序通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。1、设置两个变量 low、high,排序开始时:low=0,high=size-1。2、整个数组找基准正确位置,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面默认数组的第一个数为基准数据,赋值给key,即key=array[low]。因为默认数组的第一个数为基准,所以从后面开始向前搜索(high–),找到第一个小于
2021-01-10 17:34:47
201
转载 并查集分析与模板C++
并查集是一种数据结构并(Union),代表合并查(Find),代表查找集(Set),代表这是一个以字典为基础的数据结构,它的基本功能是合并集合中的元素,查找集合中的元素并查集的典型应用是有关连通分量的问题并查集解决单个问题(添加,合并,查找)的时间复杂度都是O(1)O(1)O(1)因此,并查集可以应用到在线算法中并查集跟树有些类似,只不过她跟树是相反的。在树这个数据结构里面,每个节点会记录它的子节点。在并查集里,每个节点会记录它的父节点。class UnionFind{priva.
2021-01-07 23:38:24
168
原创 pip使用镜像源安装
使用国内的镜像源安装。在原来安装时在命令里加一个参数 -i,然后在i后面加国内镜像地址。选择国内的镜像源列表如下:清华源: https://pypi.tuna.tsinghua.edu.cn/simple/阿里云: http://mirrors.aliyun.com/pypi/simple/中国科技大学: https://pypi.mirrors.ustc.edu.cn/simple/豆瓣(douban):http://pypi.douban.com/simple/清华大学: https://.
2020-12-07 22:38:46
771
转载 力扣1356. 根据数字二进制下 1 的数目排序
给你一个整数数组 arr 。请你将数组中的元素按照其二进制表示中数字 1 的数目升序排序。如果存在多个数字二进制中 1 的数目相同,则必须将它们按照数值大小升序排列。请你返回排序后的数组。解答:统计二进制1的个数可以分别获取每个二进制位数,然后再统计其1的个数,此方法效率比较低。这里介绍另外一种高效的方法,同样以 34520 为例,我们计算其 a &= (a-1)的结果:第一次:计算前:1000 0110 1101 1000 计算后:1000 0110 1101 0000 第二次:计算
2020-11-06 19:37:19
240
原创 C++ &的重要性
力扣145 二叉树后序遍历class Solution {public: void postorder(TreeNode* root, vector<int> res){ if(root == nullptr) return; postorder(root->left,res); postorder(root->right,res); res.push_back(root->val); }
2020-09-29 10:57:12
233
原创 matlab安装遇到的许可证问题
进入安装路径中,有一个license文件夹,点进去,有一个名字license_R2017a.lic的文件或者类似名字(版本不同),用记事本打开,保留前四行# MATLAB license passcode file for use with FLEXlm.# LicenseNo: FreeForAll HostID: ANY# Standalone license file#把后面所有内容换成以下内容保存INCREMENT Aerospace_Blockset MLM 99 per
2020-09-09 19:15:41
6277
1
原创 void类型声明中使用return
函数用void类型声明代表不需要返回值。但是,有时候需要在函数内部强行终止函数继续运行下面的语句。这时用return语句。例如这个oj题https://leetcode-cn.com/problems/letter-case-permutation/给定一个字符串S,通过将字符串S中的每个字母转变大小写,我们可以获得一个新的字符串。返回所有可能得到的字符串集合。class Solution {private: vector<string> ans;public:
2020-07-08 18:55:30
3088
原创 C++ ^=异或
异或的数学符号为“⊕”,计算机符号为“xor”。其运算法则为:a⊕b = (¬a ∧ b) ∨ (a ∧¬b)如果a、b两个值不相同,则异或结果为1。如果a、b两个值相同,异或结果为0。^=(异或的一个妙用)给定一个字符串,编写一个函数判定其是否为某个回文串的排列之一。回文串是指正反两个方向都一样的单词或短语。排列是指字母的重新排列。回文串不一定是字典当中的单词。题目来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/palindrom
2020-07-07 16:39:58
10701
原创 runtime error: addition of unsigned offset to 0x602000000130 overflowed to 0x60200000012c (stl_vecto
runtime error: addition of unsigned offset to 0x602000000130 overflowed to 0x60200000012c (stl_vector.h)
2020-07-05 14:42:47
33488
12
原创 Visual Studio开发快捷键与代码自动生成
Visual Studio中,输入模板的名称,连按两下TAB,VS就可以把代码补充完整,大大提高了开发效率。foreach:foreach (var item in collection) {}do:do… while loopwhile:while (true) {}if:if (true) { }try:try….catch…class:class MyClass{}ctor:根据当前的类名生成空构造函数cw:Console.WriteLine()inde...
2020-07-05 14:41:50
4705
原创 for循环中++i 和 i++ 的区别
for循环中 ++i 和 i++的效果是一样的要等代码块执行完毕才能执行语句3但性能是不同的:在大量数据的时候++i的性能要比i++的性能好原因:i++由于是在使用当前值之后再+1,所以需要一个临时的变量来转存。而++i则是在直接+1,省去了对内存的操作的环节,相对而言能够提高性能...
2020-06-24 20:17:07
421
原创 Win10全选,选中一行快捷键
ctrl+a全选不消多说选一行选择当前行按Home(定位到行首)然后按Shift+Dnd(行尾)或者按End(定位到行尾)然后按Shift+Home或者按Home(定位到行首)然后按Shift+↓放在平时的笔记本电脑上,就是相当于摁一下Fn,有些笔记本摁了会亮,然后直接Shift+上下箭头选多行的话继续摁着然后多摁一下方向键多选一行...
2020-06-19 18:21:26
22889
1
原创 构造函数和析构函数
类的构造函数是类的一种特殊的成员函数,它会在每次创建类的新对象时执行。构造函数的名称与类的名称是完全相同的,并且不会返回任何类型,也不会返回 void。构造函数可用于为某些成员变量设置初始值。类的析构函数是类的一种特殊的成员函数,它会在每次删除所创建的对象时执行。析构函数的名称与类的名称是完全相同的,只是在前面加了个波浪号(~)作为前缀,它不会返回任何值,也不能带有任何参数。析构函数有助于在跳出程序(比如关闭文件、释放内存等)前释放资源。...
2020-06-11 21:46:51
417
原创 C++中有哪4种与类型转换相关的关键字?有什么特点?应该在什么场合下使用?
C++中,四个与类型转换相关的关键字:static_cast、const_cast、reinterpret_cast、dynamic_cast。1.static_cast------运算符完成相关类型之间的转换**使用场景:如在同一类层次结构中的一个指针类型到另一个指针类型,整型到枚举类型,或者浮点型到整型等。例: int m=10;double n=static_cast < int > m; int * q=static_cast < int* &g...
2020-06-11 21:41:15
249
原创 C++长度
C++获取数组长度:sizeof()获取string长度:length() size()获取字符数组(char)长度:strlen()
2020-06-07 10:52:00
434
原创 位运算的oj题目实例
^ 亦或 ----相当于 无进位的求和, 想象10进制下的模拟情况:(如:19+1=20;无进位求和就是10,而非20;因为它不管进位情况)& 与 ----相当于求每位的进位数, 先看定义:1&1=1;1&0=0;0&0=0;即都为1的时候才为1,正好可以模拟进位数的情况,还是想象10进制下模拟情况:(9+1=10,如果是用&的思路来处理,则9+1得到的进位数为1,而不是10,所以要用<<1向左再移动一位,这样就变为10了);这样公式就是:(a^b)
2020-06-06 17:26:25
303
1
原创 c++中sizeof()、strlen()、length()、size()
sizeof():返回所占总空间的字节数(1)、对于整型字符型数组(2)、对于整型或字符型指针strlen():返回字符数组或字符串所占的字节数(1)、针对字符数组(2)、针对字符指针string中length()和size()没有区别...
2020-06-05 11:13:40
161
原创 & 0x55555555等 与移位
(num & 0x55555555) << 1)((x & 0x55555555) << 1 --- 奇数位移到偶数位((x >> 1) & 0x55555555); --- 先右移一位,等于拿到奇数位
2020-05-30 21:40:19
1773
1
原创 算法-遍历,查找,排序的常用算法
常用遍历算法1.for_each要#include <functional>2.transform上面因为是空容器,所以不会通过,想通过需要加上vTarget.resize(v.size());查找find和find_if一样返回迭代器会报错,因为不知道如何比较person,需重载==...
2020-05-17 15:18:47
235
原创 C++常用容器:string,vector,deuqe,stack,list,set,map以及他们的常用api
string s = "abc";cout<<s.at(10)<<endl;//[]访问越界会挂掉,at会抛出异常
2020-05-11 11:02:38
894
原创 C++笔记:三大组件的使用——容器vector,迭代器,算法的使用
vector<int> v;v.push_back(10);v.push_back(20);//使用迭代器遍历容器vector<int>::iterator itBegin = v.begin();vector<int>::iterator itEnd = v.end();while(itBegin != itEnd){ count<<*itBegin<<endl; itBegin++;}//第二种遍历方式f.
2020-05-09 16:25:16
225
原创 C++中的substr
C++中的substrbasic_string substr( size_type pos = 0, size_type count = npos ) const;参数pos所需的子字符串的起始位置。字符串中第一个字符的索引为 0,默认值为0.count子串的长度返回值一个子字符串,从其指定的位置开始举例https://...
2020-05-08 16:40:12
341
转载 常用的英文单词2000
常用的英文单词,可以ctrl+f来查找需要的单词,查找需要的前缀后缀引导的单词1 a [ei, ə] art.一(个);任何一(个);每一(个)2 I [ai] pron.我3 ability [əbiliti] n.能力,本领;才能,才智4 able [eibəl] a.能够…的,得以…的;有才干的5 about [əbaut] prep.关于;在…周围 ad.大约;在附近6 ab...
2020-05-07 20:29:38
39729
原创 数组、链表list、容器vector 、set、stack、queue
数组在分配内存的时候是一块连续的空间,并且每个元素的内存是一样的,因此可以用下标快速访问;但正因为如此,在其中插入或者删除的操作就比较麻烦,要移动别的元素的位置,因此需要快速访问存取并且不频繁增删就用数组;链表list的每个元素使用指针相互链接,分配的空间比较自由,每个元素可以不同类型不同大小,但是访问就必须链式线扫且没有下标,插入删除比较方便,只用替换和删除指针即可,适合频繁增删的操作需求。...
2020-05-01 17:02:36
204
原创 warning C4129: “E”: 不可识别的字符转义序列 解决
vs中编写项目要打开文件,结果文件路径编译错误,把路径中的\改成\\就正确了,转义字符的应用。
2020-04-29 10:14:32
3467
拼音输入法自然语言处理
2019-12-06
Juint4 jar通用包
2018-04-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人