今天,讲了队列,栈,双端队列,双向链表,单向链表,单向链表,动态数组,set
map的便捷头文件和迭代器。今天主要是讲了一些方法。
一,队列
头文件名:queue(意义讲过了)
方法
#include<queue>
#include<iostream>
typedef long long Int;
std::queue<Int>q;
int main(){
q.push(5);//push是向队列尾添加一个元素
q.push(6);
std::cout<<q.front()<<std::endl;//front是获取队列的第一个元素
q.pop();//输出删除队列的第一个元素
std::cout<<q.back()<<std::endl;//获取队尾元素
}
二,栈
头文件名:stack(意义讲过了)
方法:
#include<stack>
#include<iostream>
typedef long long Int;
std::stack<Int>s;
int main(){
s.push(5);//push是向栈顶添加一个元素
s.push(6);
std::cout<<s.top()<<std::endl;//top是输出栈顶元素
s.pop();//删除栈顶元素
std::cout<<s.size()<<std::endl;//size:获取栈内元素数量
}
三,双端数列
头文件名:deque(即能从两端删除,添加的列表)
方法:
#include<deque>
#include<iostream>
typedef long long Int;
std::deque<Int>deq;
int main(){
deq.push_front(5);
deq.push_back(6);//从前面添加一个元素和从后面添加一个元素。同样的,还有从前后删除元素的
std::cout<<deq.front()<<std::endl;//获取第一个元素和获取队尾元素
std::cout<<deq.back()<<std::endl;
}
四,双向链表
头文件名:list(意义讲过了)
方法:
#include<iostream>
#include<list>
typedef long long Int;
std::list<Int>li;
int main(){
li.push_front(5);//跟双端数列一样
li.push_front(6);
迭代器
意义:
//将链表的各个节点指针存储,直接从一个跳到前一个或后一个
std::list<Int>::iterator i=li.begin();//迭代器,begin是链表头,end是链表尾+1(左闭右开)
for(std::list<Int>::iterator i=li.begin();i!=li.end();i++){//从链表头for到链表尾。
为什么不可以i<=li。end?
//因为链表不是连续的无法用指针判断先后
std::cout<<*i<<std::endl;
}
}
五,单向链表
头文件名:forword_list(意义讲过了)
六,动态数组
头文件名:vector(简单来说就是有无限个元素的数组,可以根据数组长度调整自身大小)
方法:
#include<vector>
#include<iostream>
typedef long long Int;
std::vector<Int>v;
int main(){
v.push_back(5);//可以向前后增删元素
v.push_back(6);
std::cout<<v.size()<<std::endl;//获取数组长度
std::cout<<v[1]<<std::endl;//输出动态数组中第二个元素
}
七,set
头文件名:set(它里面的元素不可以重复,要是新建了重复的元素直接无视)
方法:
#include<iostream>
#include<set>
typedef long long Int;
std::set<Int>set;
int main(){
set.insert(5)//向头上添加一个元素,叫5
// set.insert(5)重复了,全部无视
// set.insert(5)
// set.insert(5)
set.size();//求长度
set.erase(5);//删除5
set.count(5);//求有几个元素的值为5,由于只能有一个值,不可以再相同,所以就是求有没有这个值,非常方便
}
八,map
头文件名:map(一个可以以任意类型为下标的数组)
方法:
#include <iostream>
#include <map>
std::map<char, bool> m;
int main() {
m['A'] = false;//用char下标给map的元素赋值
m.size();//求map中有多少个元素
m.erase('A');//删除下标为A的元素
return 0;
}