一点STL的容器皮毛总结
STL概述
STL(Standard Template Library)最早由美国计算机科学家Alexander Stepanov在20世纪80年代初期提出,他在那个时候正在工作的Hewlett-Packard公司(HP)的实验室中,编写了一些与计算机科学相关的程序。Stepanov认为,程序员需要一种通用的编程模式,能够更加方便地实现各种数据结构和算法。在此基础上,他开始着手设计一种新的C++库,这就是STL的雏形。
基本容器
栈(stack)
栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。
那么怎样用c++STL库实现栈呢?
栈 基本操作
1.定义
结构:stack<数据类型> 栈名称;
例:定义一个int类型的名称为s的栈
stack<int> s;
2.入栈
结构:栈名.push(元素);
无返回值。
例:将1压入s栈栈顶
s.push(1);
3.出栈
结构:栈名.pop();
例:将s栈栈顶出栈
s.pop();
4.取栈顶元素
结构:栈名.top();
例:取s栈栈顶元素
s.top()
5.判空
结构:栈名.empty();
返回值:栈空
栈空返回true.
6.栈大小
结构:栈名.size()
s.size()
队列(queue)
队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。
基本操作
1.定义:queue<类型> 名称;
2.入队列:q.push();
3.出队列:q.pop();
4.返回最后一个元素:q.back();
5.返回第一个元素:q.front();
6.判空:q,empty();
7.大小:q.size();
vector
1.定义:vocter<类型> 名称;
2.
size();//返回容器中元素的个数
empty();//判断容器是否为空
push_back(x);在容器末尾添加x
3.遍历
for (int i = 0; i < v.size(); i++) { // 遍历vector中的所有元素
cout << v[i] << " "; // 输出每个元素
}
pair
1.定义
pair<int,int> p;
2.
make_pair(1,2);
产生新的对
3.
p.first//pair的第一个元素
p.second//pair的第二个元素
map(映射)
映射是一个键值对的集合,它允许通过键来访问对应的值。映射的键是唯一的,不能存在重复键。
1.定义
map<键类型, 值类型> 名称;
map<int,int> mp;
2.插入
名称[键] = 值;
mp["hello"]=1;
mp[1]=2;
3.删除
(1)名称.erase(键);
mp.erase("hello");
mp.erase(1);
(2)名称.clear();
4.大小
名称.size();
mp.size();
5.排序
名称.sort();
6.遍历
map的遍历需要用到迭代器;
定义方法:map<int,int>::iterator it;
遍历:
for(it=mp.begin();it!=mp.end();it++)
{
cout<< it->first;//输出键
cout<< it->second;//输出值
}
set
set是一个元素集合体,其元素具有唯一性,无序的。它自动对元素进行排序,且不允许存在重复元素。
1.定义
set<类型> 名称;
set<int> s;
2.插入
名称.insert(元素);
3.删除
(1)名称.erase(元素);
(2)名称.clear();
4.大小
名称.size();
5.排序
名称.sort();
6.遍历
set的遍历需要用到迭代器;
定义方法:set<int>::iterator it;
遍历:
for(it=s.begin();it!=s.end();it++)
{
cout<< *it << endl;
}
multimap
C++ STL库中的multimap是一种关联容器,它允许存储多个键值对,其中每个键可以对应多个值。与map容器不同,multimap允许重复的键值对存在。
multimap底层基于红黑树实现,它的键是唯一的,并且按照键的升序排列。每个键可以对应多个值,这些值按照插入顺序存储在multimap中。
他的基本操作与map大体相同。
multiset
multiset容器中的元素会按照升序自动排序。multiset容器允许包含重复的元素。