1.需要#include <ctype.h>
才能用toupper,tolower,即大小写转换
char c = str[i] >= 'a' ? toupper(str[i]) : tolower(str[i]);
2.vector<int>(n,i);:初始化大小为n,初值为i的vector
string 转char数组:
char *a = new char;
string str = "ghjk";
strcpy_s(a, n+1,str.c_str());//n可以为str.size();将str copy 到a,最后一个字符为'\0'
3.substr :返回一个从指定位置开始的指定长度的子字符串
substring :返回位于 String 对象中指定位置的子字符串。
stringvar.substr(start , [length ])
strVariable.substring(start, end)
4.min找不到标识符:
加#include <algorithm>头文件
5.
struct TreeNode {
int val; TreeNode *left; TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) {}};
TreeNode *node = new TreeNode();//会提示没有类的构造函数
改为:TreeNode *node = new TreeNode(5);即可
6.pair的使用
pair<int,int> 详细百度
初始化:①pair<int,int>(2,2);
②pair<int,int> pa=make_pair(2,2);
③pair<int,int> pa;
pa.first=2;
pa.second=2;
7.关于vector的push_back与vec[i]= 的方式的区别:详见leetcode475题
具体表现在,如果已经初始化了vec:
vector vec(3,0);//表示vec大小为3,默认值为0
再执行vec.push_back(i)操作时会对vec进行扩容,vec大小变为4,5,...,而不是从0开始往vec里加的
也就是vec会变成{0,0,0,i}的样子
8.不用加号计算两数之和
int getSum(int a, int b) {
return b == 0 ? a : getSum(a^b, (a&b) << 1); //be careful about the terminating condition;}leetcode 371.just feel interesting
9.map查找
map<string,int>::iterator key = cmap.find("Anna");
if(key!=cmap.end())
{
cout<<key->second<<endl;
}
其次,mao.count() 可用于查找某个元素出现的次数
10.将一个vector对象的一部分拷贝到另一个vector里面去
两种算法:①std::copy (比较好)② 传入迭代器的方式
eg:①std::copy(v1.begin()+n,v1.begin()+n+m,v2.begin()+p);
注意:copy(it1,it2,it3)中的it1是要复制的首位置,it2是要复制的末位置的下一个位置,it3是要复制的首位置
故,vector<int> vec = { 3, 2, 1, 6, 0, 5 };
copy(nums.begin(), nums.begin() + 3, vec1.begin());
会复制0,1,2三个位置的元素,vec1的内容为{3,2,1}
②vector<double>::iterator i1=v1.begin()+m, i2=v1.begin()+n; //m<n,且n<v1.size()
vector<double> v2(i1, i2);
11.二维数组初始化;
vector<vector<int>> vec(row, vector<int>(col,defaultno));//row 为数组行数,col为列数,defaultno为默认值
eg:vector<vector<int>> vec(5, vector<int>(4,0));
12.sort函数的使用
首先,#include <algorithm>
其次,sort(start,end,排序方法)(start和end是迭代器)
其中的排序方法:[&](int a,int b){return a>b;}
或[&](char a, char b){ return S.find(a) < S.find(b);都是可以的,[&]是特殊符号,不可替换为其他
sort(T.begin(), T.end(), [&](char a, char b){ return S.find(a) < S.find(b); });的形式