最近工作从java转到c++了,刷题的时候常会忘记容器的方法,查找起来很不方便,决定针对c++刷题,总结一下,方便查阅。
unordered_map
1、插入元素
//数组形式
map['a'] = 1;
//直接插入
map.insert( { {'b',2} , {'c',3} } );
2、修改元素
map['a'] = 0;
3、删除元素
//删除key为'a'的元素
map.erase('a');
//删除第一个元素
map.erase(map.begin());
4、判断元素是否存在
//如果元素存在
if(map.find('a')!=map.end())
if(map.count('a')!=0)
5、清空所有元素
map.clear();
6、 遍历并取出键和值
//方法一
for( auto& a : map)
{
char key= a.first;
int value= a.second;
}
//方法二
for (auto it = map.begin(); it != map.end(); it++)
{
char key = it->first;
int value = it->second;
}
7、判断是否为空
if( map.empty() )
8、求值键对个数
map.size();
queue
pop() //删除第一个元素
push() //在末尾加入一个元素
size() //返回队列中元素的个数
empty() //如果队列空则返回真
front() //返回第一个元素
back() //返回最后一个元素
stack
pop() //弹出堆栈顶部的元素
push() //向堆栈顶部添加元素
size() //返回堆栈中元素的个数
empty() //判断堆栈是否为空
top() //返回堆栈顶部的元素
vector
1、插入和删除元素
// 创建一个空的vector
std::vector<int> v;
// 在vector末尾添加元素
v.push_back(1);
v.push_back(2);
v.push_back(3);
// 删除vector末尾的元素
v.pop_back();
// 在vector的第二个位置插入元素
v.insert(v.begin() + 1, 4);
// 删除vector的第三个元素
v.erase(v.begin() + 2);
2、访问元素
// 创建一个有5个元素的vector
std::vector<int> v {1, 2, 3, 4, 5};
// 通过下标访问元素
int x = v[0];
// 使用at()函数访问元素
int y = v.at(1);
// 使用迭代器访问元素
for (auto it = v.begin(); it != v.end(); ++it) {
std::cout << *it << " ";
}
// 使用范围for循环访问元素
for (int n : v) {
std::cout << n << " ";
}
3、修改元素
// 创建一个有3个元素的vector
std::vector<int> v {1, 2, 3};
// 修改vector的第二个元素
v[1] = 4;
// 修改vector的第三个元素
v.at(2) = 5;
4、容量操作
// 创建一个有5个元素的vector
std::vector<int> v {1, 2, 3, 4, 5};
// 查询vector的大小
int size = v.size();
// 判断vector是否为空
bool empty = v.empty();
// 查询vector的容量
int capacity = v.capacity();
// 调整vector的容量
v.reserve(10);
v.shrink_to_fit();
priority_queue
1、定义
priority_queue<typename, container, functional>
- typename是数据的类型;
- container是容器类型,可以是vector,queue等用数组实现的容器,不能是list,默认可以用vector;
- functional是比较的方式,默认是元素值越大,优先级越高。
2、基本操作
push() :入队
pop() :将队列中优先级最高的元素出队
top() :获得队列优先级最高的元素
size() :获得队列大小
empty() :判断队列是否为空
文章只是为了c++刷题时方便查阅,后续刷题遇到新的容器使用方法还会持续更新。