C++笔记
Alvin畅
这个作者很懒,什么都没留下…
展开
-
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 · 473 阅读 · 0 评论 -
滑动窗口技巧-子串问题
遇到⼦串问题,⾸先想到的就是滑动窗⼝技巧。 滑动窗⼝算法的抽象思想: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 · 354 阅读 · 0 评论 -
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 · 1407 阅读 · 0 评论 -
位运算的技巧
对于任意整数 xx,令x=x&(x−1),该运算将 xx 的二进制表示的最后一个 1变成 0。因此,对 xx 重复该操作,直到 xx 变成 00,则操作次数即为 xx 的「一比特数」。原创 2021-03-07 16:12:11 · 238 阅读 · 0 评论 -
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 · 913 阅读 · 0 评论 -
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 · 262 阅读 · 0 评论 -
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 · 206 阅读 · 0 评论 -
位运算符
& | ^ 0 0 0 0 0 0 1 0 1 1 1 0 0 1 1 1 1 1 1 0原创 2020-09-09 23:31:20 · 100 阅读 · 0 评论 -
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 · 3021 阅读 · 0 评论 -
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 · 10525 阅读 · 0 评论 -
for循环中++i 和 i++ 的区别
for循环中 ++i 和 i++的效果是一样的要等代码块执行完毕才能执行语句3但性能是不同的:在大量数据的时候++i的性能要比i++的性能好原因:i++由于是在使用当前值之后再+1,所以需要一个临时的变量来转存。而++i则是在直接+1,省去了对内存的操作的环节,相对而言能够提高性能...原创 2020-06-24 20:17:07 · 403 阅读 · 0 评论 -
构造函数和析构函数
类的构造函数是类的一种特殊的成员函数,它会在每次创建类的新对象时执行。构造函数的名称与类的名称是完全相同的,并且不会返回任何类型,也不会返回 void。构造函数可用于为某些成员变量设置初始值。类的析构函数是类的一种特殊的成员函数,它会在每次删除所创建的对象时执行。析构函数的名称与类的名称是完全相同的,只是在前面加了个波浪号(~)作为前缀,它不会返回任何值,也不能带有任何参数。析构函数有助于在跳出程序(比如关闭文件、释放内存等)前释放资源。...原创 2020-06-11 21:46:51 · 391 阅读 · 0 评论 -
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 · 211 阅读 · 0 评论 -
C++长度
C++获取数组长度:sizeof()获取string长度:length() size()获取字符数组(char)长度:strlen()原创 2020-06-07 10:52:00 · 406 阅读 · 0 评论 -
位运算的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 · 274 阅读 · 1 评论 -
c++中sizeof()、strlen()、length()、size()
sizeof():返回所占总空间的字节数(1)、对于整型字符型数组(2)、对于整型或字符型指针strlen():返回字符数组或字符串所占的字节数(1)、针对字符数组(2)、针对字符指针string中length()和size()没有区别...原创 2020-06-05 11:13:40 · 137 阅读 · 0 评论 -
& 0x55555555等 与移位
(num & 0x55555555) << 1)((x & 0x55555555) << 1 --- 奇数位移到偶数位((x >> 1) & 0x55555555); --- 先右移一位,等于拿到奇数位原创 2020-05-30 21:40:19 · 1651 阅读 · 1 评论 -
算法笔记-拷贝和替换,数字,集合的常用算法
原创 2020-05-17 20:05:03 · 119 阅读 · 0 评论 -
算法-遍历,查找,排序的常用算法
常用遍历算法1.for_each要#include <functional>2.transform上面因为是空容器,所以不会通过,想通过需要加上vTarget.resize(v.size());查找find和find_if一样返回迭代器会报错,因为不知道如何比较person,需重载==...原创 2020-05-17 15:18:47 · 194 阅读 · 0 评论 -
函数对象,谓词,内置函数,适配器
函数对象原创 2020-05-12 20:02:02 · 97 阅读 · 0 评论 -
C++常用容器:string,vector,deuqe,stack,list,set,map以及他们的常用api
string s = "abc";cout<<s.at(10)<<endl;//[]访问越界会挂掉,at会抛出异常原创 2020-05-11 11:02:38 · 871 阅读 · 0 评论 -
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 · 210 阅读 · 0 评论