1: 容器vector res
vector<int> res // 用vector声明一个数组, 元素为int类型
vector<int> res{0, 1, 2, 3}; // 初始化一个res的容器
vector<int> res(n, -1); // 初始化一个res的容器, 有3个元素,每个元素值为-1
res.size() // vector用.size()去求解大小或去计算元素个数
res.push_back(i) // 向容器res尾部插入元素i (类似进栈)
res.pop_back() // 弹出当前容器最后一个元素 (类似栈顶元素出栈)
vector<string> roma{"XI", "D", "II"}; // 初始化一个字符串型容器
res.begin() // res的首部指针,是一个迭代器
res.end() // res的尾部指针,是一个迭代器
res.front() // res的第一个元素
res.back() // res的最后一个元素
res.resize(n, 0) // 配容器的内存大小为n, 初始值为0。默认不写的话为0。 (这个是将值清0)\
res.clear(); // 清空一维的数组, 这个动作会将vector大小设置为0, 但是capacity不变。
参考链接:
C++ —— vector容器_二维vector赋值-CSDN博客
【C++ STL】vector类最全详解(什么是vector?vector类的常用接口有哪些?)-CSDN博客
【C++】详解vector二维数组的全部操作(超细图例解析!!!)_c++ 二维vector-CSDN博客
2: 二维容器、矩阵
vector<string> strs;
vector<vector<int>> nums;
int m = strs.size(); // 求行
int n = strs[0].size(); // 求列
nums.push_back(nums1); // 二维数组追加一个一个数组 vector<int> nums1
3: hash_map m
unordered_map<int, int> m // 用unordered_map声明一个无序map, key为int, val为int
m.count(key) // 查找hash_map中有没有这个key-val,返回个数
m[key] = val; // m中添加一个key-value
unordered_map<string, int> roma{{"IV", 4}, {"IX", 9}, {"XL", 40}}; // 初始化一个hash_map,注意这里的数据类型
4: 链表
ListNode* dumny = new ListNode(-1); // 创建一个哑节点
ListNode*cur = dumny; // 创建一个游标来指向当前哑节点
cur = cur->next; // 游标7移动
5: 字符串string s
string s = "" ; //初始化一个空串
int str_len = s.size(); //求字符串s的长度
s.empty(); // s为空则返回true,否则返回false
s[0] //s的第一个元素 访问字符串的元素可以用下标去访问
string str1 = s.substr(2, 5) // 返回s从下标2开始的5个字符长度的子串
string str2 = s.substr(2) // 返回s从下标2开始到结尾的子串, 默认值为结尾
int pos = s.find("love") // 返回子串love在s的起始位置
string res;
res += '单个字符' or 某个子字符串
res.reverse(res.begin(), res,end()); // 反转字符串
6: 函数
int a = max(A, B); // 求最大值
int b = min (A, B); // 求最小值
INT_MAX // 正整数的最大值2^31-1
INT_MIN // 正整数的最小值-2^31
sort(vectorA.begin(), vectorA.end()); // 排序, 元素分别是容器首部和容器尾部
swap(a, b); // 交换a, b
7: 栈和队列
stack<int> my_stack;
my_stack.pop()
my_stack.push()
my_stack.top()
queue<int> my_queue;
my_queue.pop()
my_queue.push()
my_queue.front() 队首元素
my_queue.bac() 队尾元素