尊敬的读者您好:笔者很高兴自己的文章能被阅读,但原创与编辑均不易,所以转载请必须注明本文出处并附上本文地址超链接以及博主博客地址:https://blog.csdn.net/vensmallzeng。若觉得本文对您有益处还请帮忙点个赞鼓励一下,笔者在此感谢每一位读者,如需联系笔者,请记下邮箱:zengzenghe@gmail.com,谢谢合作!
一、队列常见操作
① 队列声明:queue<元素类型>队列名 例如:queue<int> q1;
② 入队:q.push(x); 将x 接到队列的末端。
③ 出队:q.pop(); 弹出队列的第一个元素,注意,并不会返回被弹出元素的值。
④ 访问队首元素:q.front(),即最早被压入队列的元素。
⑤ 访问队尾元素:q.back(),即最后被压入队列的元素。
⑥ 判断队列空:q.empty(),当队列空时,返回true。
⑦ 存放一个数据pair:queue< pair<TreeNode*,int> > q;
访问该数据pair:q.front().first; q.front().second;
二、vector的常见操作
① vector的声明与初始化:
一维数组
vector<元素类型>向量名
vector<int> v1; v.push_back(10):默认初始化,vector为空,size为0,未开辟空间,可通过push_back()添加元素
vector<int> v(5,2):指定初始化元素值为2
vector<int> v = {1,2,3,4,5}:指定初始化元素值
二维数组(vector<vector<int>>其实还是一个vector,所以跟vector的初始化一样,第一个值表示大小,第二个表示元素值,只不过不同的是vector<vector<int>>的元素值也是一个vector(同理也可以使用push_back(v)添加元素))
1> vector<vector<int>> v( 5, vector<int>(5, 1) ):将二维向量初始化为5*5且值为1。
2> 先类中声明类成员变量visited: vector<vector<bool>> visited; 再在成员函数中初始化visited: visited = vector<vector<bool>>( row, vector<bool>(col, false) ); 以在递归中实现共用成员变量visited,免去了在递归中反复传参的操作。
② push_back 在数组的最后添加一个数据
③ pop_back 去掉数组的最后一个数据
④ begin 得到数组头的指针
⑤ end 得到数组的最后一个单元+1的指针
⑥ back 得到数组的最后一个单元的引用
⑦ erase 删除指针指向的数据项
⑧ clear 清空当前的vector
⑨ rbegin 将vector反转后的开始指针返回(其实就是原来的end-1)
⑩ rend 将vector反转构的结束指针返回(其实就是原来的begin-1)
一维vector初始化方法:
三、栈的常见操作
① 栈的声明:stack<元素类型>栈名 例如:stack<int> s1;
② 入栈: 栈名.push() s1.push();
③ 出栈:栈名.pop() s1.pop();
④ 取栈顶元素: 栈名.top() int a = s1.top();
⑤ 判栈空: 栈名.empty() s1.empty();
⑥栈的大小的判定: 栈名.size() int len = s1.size();
四、树节点的常见操作
① 访问当前节点的右孩子:node -> right
② 访问当前节点的左孩子:node -> left
③ 访问当前节点的值:node -> val
五、链表节点的常见操作:
① 访问当前节点指向的下一个节点:node -> next
② 获取当前节点的值:node -> val;
③ 创建一个新节点:ListNode* dummyHead = new ListNode(-1);(在链表问题中常用此来建立虚拟节点)
④ 创建一个指向头节点的新节点指针:ListNode* cur = head;
日积月累,与君共进,增增小结,未完待续。