1,int numerator
long long num=static_cast<long long>(numerator) //将int型转换位long long型
2,llabs() //long long类型取绝对值
3,字符串拼接,s.append()
4,整数转字符串,to_string(num)
5,字母转整数,s-'A'+1 字符数字转整型,'1'-'0'
6,排序函数sort(),形式有sort(nums.begin(),nums.end()),也可自定义排序方法,sort(nums.begin(),nums.end(),compare),注意compare是静态方法,
要加static关键字。
7,位运算符,<<左移末尾补0,>>右移首部补0,运算符后面加上要移动的位数。定义一个只有一位为1的数,uint32_t n=1,n<<=1;
8,对于if(条件1&&条件2&&条件3),代码运行时会从左往右检查条件,若左边条件有越界,右边的条件防止越界,代码运行出错,此时应将条件换一下位
置,将会越界的情况放置末尾。
9,字符串转整数,stoi(str)
10、位运算:二进制无进位加法,是异或运算;进位值为与运算左移一位。
11、删除字符串头尾空格
if(!str.empty()){
str.erase(0,str.find_first_not_of(" "));
str.erase(str.find_last_not_of(" ") + 1);
}
12、lower_bound(nums.begin(),nums.end(),val),如果找不到与value值相同的元素,则返回第一个“不小于value”的元素的位置。 upper_bound(nums.begin(),nums.end(),val),如果找不到与value值相同的元素,则返回第一个“不大于value”的元素的位置。
vector使用二分查找向有序数组中插入数字,不会改变其顺序,使用方法:nums.insert(lower_bound(nums.begin(),nums.end(),val),val)。
13、sort自定义排序:sort(nums.begin(),nums.end(),cmp),其中cmp是自定义的静态方法。static bool cmp(){};
14、push_back和emplace_back,vector容器添加元素的两种方法,push_back()向容器中加入一个右值元素(临时对象)时,
首先会调用构造函数构造这个临时对象,然后需要调用拷贝构造函数将这个临时对象放入容器中。原来的临时变量释放。
这样造成的问题就是临时变量申请资源的浪费。emplace_back可以在插入的时候直接构造,就只需要构造一次即可。
添加字符串:vector<string>res; res.emplace_back(2,'a');//结果为["aa"],重复添加两次字符'a'
15、vector中指定位置插入元素:vector<int>v; v.insert(v.begin(),val);
16、升序队列,小顶堆:priority_queue <int,vector<int>,greater<int> > q;
降序队列,大顶堆:priority_queue <int,vector<int>,less<int> >q;