Coding
Leooon726
这个作者很懒,什么都没留下…
展开
-
c++中的explicit关键字
explicit 的意思是明确的,显式的该关键字用于类的构造函数前,避免默认的隐式类型转换class foo{ public: explicit foo(){} }所谓的隐式类型转换是:class MyString{ public: char *ptr_; foo(int size){ ptr_ = malloc(size+1);//分配内存空间 memset(ptr_,0,size+1);//填充0 } } int main(){原创 2020-08-08 20:35:21 · 99 阅读 · 0 评论 -
C++中的namespace命名空间和匿名命名空间
命名空间:namespace叫命名空间,用于解决函数/变量重名的问题,如果一个函数/变量被声明在命名空间中,那么使用他们的时候需要加上作用域namespace foo{ int x = 10; } cout<<foo::x<<endl;除了加上作用域,还可以使用using关键字来默认指定命名空间namespace foo{ int x = 10; } using namespace foo; cout<<x<<endl原创 2020-08-08 17:21:50 · 806 阅读 · 0 评论 -
C++中的左值、右值、左值引用和右值引用
左值:分配了固定内存地址的变量,之所以叫左值是因为它既可以出现在等号左侧也可以出现在等号右侧int x = 3; //x是一个左值,被分配到了一个固定的内存空间 cout<<x<<endl; //程序的其他部分可以访问这个内存空间右值:编译器临时分配了内存空间的变量,访问过一次之后就被删除了。之所以叫右值是因为它只能出现在等号右侧int x = square(5); // x是左值,square(5)是一个右值 int y = 3+4; //3+4 也是一原创 2020-08-08 16:59:40 · 134 阅读 · 0 评论 -
python递归需要使用self
在刷剑指offer的时候遇到合并链表的题,使用python尝试用递归方法来解,结果出现了global name 'Merge' is not defined的错误,原因是在递归调用的时候需要使用self.Merge()# class ListNode:# def __init__(self, x):# self.val = x# self.next ...原创 2019-05-03 16:07:00 · 1584 阅读 · 1 评论 -
C++中的sort函数
C++中的sort函数的使用:sort(start,end,排序方法)start和end是参与排序的序列的起止排序方式是自定义的排序规则,例如升序或者降序等。//按照升序排列static bool cmp(char &a,char &b){ return a<b;}int main(){ string a; cin>>a; sort(a.b...原创 2019-05-22 19:31:43 · 145 阅读 · 0 评论 -
C++中的unordered_set
使用时候需要#include <unordered_set>定义:unordered_set<int> myset;存入unordered_set 之中是不重复的数。使用函数:myset.insert(c);//插入某个值it = myset.find(c);当 it==myset.end(),说明没有找到myset.erase(c)//去掉某个值...原创 2019-05-22 21:24:36 · 868 阅读 · 0 评论 -
逆序对的数量
给定一个长度为n的整数数列,请你计算数列中的逆序对的数量。逆序对的定义如下:对于数列的第 i 个和第 j 个元素,如果满 i < j 且 a[i] > a[j],则其为一个逆序对;否则不是。输入格式第一行包含整数n,表示数列的长度。第二行包含 n 个整数,表示整个数列。输出格式输出一个整数,表示逆序对的个数。数据范围1≤n≤1000000输入样例:62 3 4 5...原创 2019-05-18 11:09:33 · 1195 阅读 · 0 评论 -
二分法的本质及应用
如果对于一段序列,我们可以按照某种性质将其分成【具备该性质】和【不具备该性质】的两段子序列,而二分法可以用于寻找这两段子序列的边界。下面给出两段代码//用于寻找具备某性质的子序列的下边界int bsearch_lb(int l, int r)//lowerbound{ while (l < r) { int mid = l + r >> 1...原创 2019-05-18 12:52:59 · 482 阅读 · 0 评论