Day2-数据结构与STL
这一节的主要内容比较多,但都好理解。内容就是STL,栈和队列,vetor(动态数组),set(集合),map(映射)。话不多说,直接上干的!
STL是Standed Template Library的简称是c++非常实用的器string,stack,vector,
set,map等都在其中。
栈是一种先进后出(FILO)的线性表,要注意的是它只能在一端入栈或出栈。
//定义
strack <typename> name;
//常用函数
str.push(x);//把x入栈
str.pop();//弹出栈顶的元素
str.top();//获得栈顶元素
str.empty();//是否为空
str.size();//栈内元素个数
队列,是一种先进先出(FIFO)的线性表,元素只能从一端入队,从另一端出队。
//定义
queue <typename> name;
//常用函数
q.push(x);//把x入队
q.pop();//弹出队首的元素
q.front();//获得队首元素
q.back();//获得队尾元素
q.empty();//是否为空
q.size();//栈内元素个数
优先队列,和队列一样,只不过队列中优先级最大的元素总在队首(可以改)
//定义
priority_queue < int,vector<int>,greater<int> > q1;()//最大的元素在队首
priority_queue < int,vector<int>,less<int> > q2;()//最大的元素在队尾
//常用函数
q.push(x);//把x入队
q.pop();//弹出队首的元素
q.top();//获得队列中优先级最高的元素
q.empty();//是否为空
q.size();//栈内元素个数
注意:优先队列无法去重,也没有back()操作!
vector,动态数组,主要用于用普通数组会超内存的情况,是一个可以自动改变大小的数组。
//定义
vector <typename> name;
//初始化
vector <typename> name(n);//有n个元素
vector <typename> name(n,m);//有n个元素,值全部为m
vector <typename> name{a1,a2,a3,....,an};//有n个元素,第i个元素为ai;
常用函数
set,集合,是可以自动去重,自动排序,快速查找,插入和删除元素的超级数据结构。
//定义
set <typename> name;
常用函数
注意:set只能用迭代器访问!!!
map,映射,它可以将任何类型映射成为任何其他类型,其中一个是键类型,一个是值类型。这个可能有点难以理解,可以简单理解为一个人,给它取了一个小名,这个小名就是键类型,这个人就是值类型。
//定义
map <键类型,值类型> name;
那么这就是数据结构的全部内容啦,zhi’zou’bu’yi


