int: 通常为32位,表示带符号的整数,范围约为 -2,147,483,648 到 2,147,483,647。
short: 通常为16位,表示带符号的短整数,范围约为 -32,768 到 32,767。
long: 通常为32位,表示带符号的长整数,范围约为 -2,147,483,648 到 2,147,483,647。
long long: 通常为64位,表示带符号的长长整数,范围约为 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807。
eg : 0LL是一个长的长零。
异或 ^ :相同0 相异1
数组
vector<string> mat(r); --->叫mat 的长度为r的一维数组(和StringBuffer)
for(auto &row : mat) -----> 遍历mat,auto自动分配mat每个元素的类型,&
char c=mat[0][i] ---->第1个字符串的第i个字母
mat.size();
mat.begin()
mat.end()
mat.empty()
mat.push_back() --->将一个新的元素加到vector的最后面,位置为当前最后一个元素的下一个元素
pop_back() ---->删除最后一个(string 和 数组都可以用)
memset(mat,0,sizeof(mat)); ----> 初始化数组mat,都变0,大小是mat的大小
max_element()与min_element()
分别用来求最大元素和最小元素的位置
vector<int> n;
int maxPosition = max_element(n.begin(),n.end()) - n.begin(); //最大值下标
int minPosition = min_element(n.begin(),n.end()) - n.begin();//最小值下标
int maxV = *max_element(n.begin(),n.end()); //最大值
int minV = *min_element(n.begin(),n.end());//最小值
int a[]={1,2,3,4};
int maxPosition = max_element(a,a+2) - a; //最大值下标
int minPosition = min_element(a,a+2) - a;//最小值下标
二维数组
vector<vector<int>> ans(n,vector<int>(n)); ---->初始化叫ans的,n行,n列
字符串 string s;
s.size();
s[i] ----->第i个字符(char)
s.substr(a,b); ----->输出s中 a到b的字符串
字符串相连可以直接相加
链表
ListNode *head = nullptr; -----> 空
head->val
哈希集合set
unordered_set<char> set;
set.erase(s[i]); ----->移除 s[i]
set.count(s[i]); ------>包含s[i]
set.insert(s[i]); ------->添加s[i]
哈希集合map
unordered_map<string,vector<string>> map;
unordered_map<char,int> map;
int a = map['c'];
map.at(i) ----->访问第i个元素
int 最小 INT_MIN 最大 INT_MAX
栈
stack<char> stk;
stk.empty(); ---->是否空 空true 非空false
stk.top(); ---->栈顶元素是啥
stk.pop(); ---->出栈
stk.push(ch); ---->入栈
auto
想要拷贝元素:for(auto x:range)
想要修改元素 : for(auto &&x:range)
想要只读元素:for(const auto& x:range)
pair
const pair<int, string> valueSymbols[] = { {1000, "M"},{900, "CM"},};
for(const auto &[value,symbol] : valueSymbols)
pair<int, string> myPair(42, "hello");
int myInt = myPair.first;
string myString = myPair.second;
排序sort()
sort(begin, end, cmp) : begin:第一个元素,end:最后一个元素的下一个位置,cmp参数可以不写(默认从小到大)。从大到小 : cmp参数写为greater<int>()
eg. sort(nums.begin(),nums.end());
accumulate(起始迭代器, 结束迭代器, 初始值, 自定义操作函数) -----> 对指定范围内元素求和
int sum = accumulate(arr.begin(), arr.end(), 0); // 初值0 + (1 + 2 + 3 + 4 +... + 10)
int sum = accumulate(arr.begin(), arr.end(), 1, multiplies<int>()); // 初值1 * (1 * 2 * 3 * 4 *... * 10)
res = accumulate(words.begin(), words.end(), init); // 连接字符串
a&1 -->判断奇偶的,奇数:1,偶数:0
swap(nums[i],nums[j]); -->交换
reverse(nums.begin()+i+1,nums.end()); --->从第i+1个元素到最后一个元素反转