1.字典undered_map
作用:快速查找元素
声明及初始化:使用<>,访问、修改、添加元素使用[],
#include <unordered_map>
#include <iostream>
using namespace std;
int main()
{
/*1.声明
声明一个键为int类型,值为char类型的哈希表
使用<>将键值类型括起来*/
unordered_map<int, char> hmap;
/*2.初始化*/
unordered_map<int, char> amap{ {1,'a'},{2,'b'},{3,'c'} };//定义时初始化,最外层使用{},每一对键值对使用{}括起来,使用逗号隔开;
amap[4] = 'd';//下标直接添加元素
cout << amap[4]<<endl;//输出'd'
}
常用api
API | 作用 | 说明 |
find | 查找元素 | 传入参数键,存在该元素则返回改位置上的迭代器,否则返回哈希表最后一个元素下一个位置的迭代器。通过查询迭代器second属性访问该key对应的元素 |
count | 统计目标键值个数(查找元素) | 输入目标键值,由于哈希表键不允许重复,返回为1代表存在该键,为0表示不存在改键 |
erase | 删除元素 | 传入参数键,删除对应键值对 |
begin | 指向哈希表开始位置的迭代器 | |
end | 指向哈希表结束位置的下一个元素的迭代器 | 一般配合find函数使用 |
size | 获得哈希表大小 | 无参数 |
#include <unordered_map>
#include <iostream>
using namespace std;//声明命名空间
int main()
{
/*1.声明
声明一个键为int类型,值为char类型的哈希表
使用<>将键值类型括起来*/
unordered_map<int, char> hmap;
/*2.初始化*/
unordered_map<int, char> amap{ {1,'a'},{2,'b'},{3,'c'} };//定义时初始化,最外层使用{},每一对键值对使用{}括起来,使用逗号隔开;
unordered_map<int, char> bmap{ amap };//通过已初始化哈希表初始化新的表
//3.添加、修改元素
amap[4] = 'd';//下标直接添加元素
cout << amap[4] << endl;//输出'd'
amap[4] = 'e';//修改键4对应的值为'e'
cout << amap[4] << endl;//输出'e'
//4.删除元素
amap.erase(4);//删除键4,及其对应的值
//5.查找元素
if (amap.find(3)!=amap.end())//通过find函数查找是否存在键为4的键值对,不存在则返回结果为指向最后一个元素下一个位置的迭代器
{
cout << amap.find(3)->second << endl;//通过查询返回迭代器的second属性获得对应值
}
else
{
cout << "not find" << endl;
}
if (amap.count(4))//通过count查询是否存在键为4的键值对,返回1表示找到了,返回0为不存在
{
cout << "find key=4" << endl;
}
else
{
cout << "not find" << endl;
}
}
哈希表的遍历
unordered_map<int, int> hmap{ {1,10},{2,12},{3,13} };
unordered_map<int, int>::iterator iter = hmap.begin();
for( ; iter != hmap.end(); iter++){
cout << "key: " << iter->first << "value: " << iter->second <<endl;
}
2.容器vector
初始化
vector<int> a(10);//定义10个整形元素的向量(尖括号中int表示数据类型),没有给初值,其值不确定
vector<int> b(10,1);//定义10个整形元数的向量b,初值为1
vector<int> c(b);//深拷贝b创建c向量
常用api
- 删除元素
删除最后一个元素pop_backvector<int> a={1,2,3};//创建vector向量 a.pop_back();//删除最后一个元素,[1,2]
3.队列queue
初始化
queue<int> q1;//创建一个int类型队列
queue<char> q2;//创建一个char类型队列
常用api
API | 作用 | 说明 |
push | 队尾插入一个元素 | |
pop | 删除队列第一个元素 | |
size | 返回队列元素个数 | |
empty | 队列为空返回true | |
front | 返回队列第一个元素 |