文章目录
一、容器vector
二、容器map
1.map简介
map是stl的一个关联容器,它提供一对一的hash。
- 第一个可以称为关键字(key),每个关键字只能在map中出现一次;
- 第二个可能称为该关键字的值(value)。
2.map的功能
自动建立key-value的对应。key和value可以是任何需要的类型,包括自定义类型。
3.使用map
- 使用map得包含map类所在的头文件
#include<map>
- map的定义
std:map<int,string>personnel;
4.mapde构造函数
5.插入元素
//定义一个map对象
map<int,string>mapStudent;
//第一种 用insert函数插入pair
mapStudent.insert(<pair<int,string>(000,"student_zero"));
// 第二种 用insert函数插入value_type数据
mapStudent.insert(map<int, string>::value_type(001, "student_one"));
// 第三种 用"array"方式插入
mapStudent[123] = "student_first";
mapStudent[456] = "student_second";
6.删除于清空元素
//迭代器刪除
iter = mapStudent.find("123");
mapStudent.erase(iter);
//用关键字刪除
int n = mapStudent.erase("123"); //如果刪除了會返回1,否則返回0
//用迭代器范围刪除 : 把整个map清空
mapStudent.erase(mapStudent.begin(), mapStudent.end());
//等同于mapStudent.clear()
7.map的大小
int nSize = mapStudent.size();
8.map的基本操作
begin() 返回指向map头部的迭代器
clear() 删除所有元素
count() 返回指定元素出现的次数
empty() 如果map为空则返回true
end() 返回指向map末尾的迭代器
equal_range() 返回特殊条目的迭代器对
erase() 删除一个元素
find() 查找一个元素
get_allocator() 返回map的配置器
insert() 插入元素
key_comp() 返回比较元素key的函数
lower_bound() 返回键值>=给定元素的第一个位置
max_size() 返回可以容纳的最大元素个数
rbegin() 返回一个指向map尾部的逆向迭代器
rend() 返回一个指向map头部的逆向迭代器
size() 返回map中元素的个数
swap() 交换两个map
upper_bound() 返回键值>给定元素的第一个位置
value_comp() 返回比较元素value的函数
三、队列queue
队列结构:先进先出(FIFO)
1.使用标准库的队列时,先包含相关的头文件
#include<queue>
2.定义队列如下:
queue<int> q;
3.队列提供了如下操作
q.empty() 如果队列为空返回true,否则返回false
q.size() 返回队列中元素的个数
q.pop() 删除队列首元素但不返回其值
q.front() 返回队首元素的值,但不删除该元素
q.push() 在队尾压入新元素
q.back() 返回队列尾元素的值,但不删除该元素
4.优先队列
在头文件中,还定义了一个模版类priority_queue(优先队列),优先队列与队列的差别在于优先队列不是按照入队的顺序出队,而是按照队列中元素的优先权顺序出队(默认为大者优先,也可以通过指定算子来指定自己的优先顺序)
代码如下:
扫描二维码关注公众号,回复:
14650674 查看本文章
#include<iostream>
#include<queue>
#include<stdlib.h>
using namespace std;
class T
{
public:
int x,y,z;
T(int a,int b,int c):x(a),y(b),z(c)
{
}
};
bool operator<(const T&t1,const T&t2)
{
return t1.z<t2.z;
}
int main(void)
{
priority_queue<T>q;
q.push(T(4,4,3));
q.push(T(2,2,5));
q.push(T(1,5,4));
q.push(T(3,3,6));
while(!q.empty())
{
T t=q.top();
q.pop();
cout<<t.x<<" "<<t.y<<" "<<t.z<<endl;
}
system("Pause");
return 1;
}
四、栈stack
队列结构:先进先出(FIFO)
1.使用标准库的队列时,先包含相关的头文件
#include<stack>
2.定义栈如下:
stack<int> stk;
3.栈提供了如下操作
stk.empty() 如果栈为空返回true,否则返回false
stk.size() 返回栈中元素的个数
stk.pop() 删除栈顶元素但不返回其值
stk.top() 返回栈顶的元素,但不删除该元素
stk.push() 在栈顶压入新元素