AKSZ-STL
2024-05-05 17:34:13
发布于:广东
STL容器
表达式转化
82+3*(20-8)/2
- 加括号
(82 + ( (3 * (20 - 8) ) / 2) ) - 移动运算符
(82 ( (3 (20 8) - ) * 2) / ) + - 删括号
82 3 20 8 - * 2 / +
STL
概念
STL(标准模板库),提供模板化的常见操作。
包含容器(一种数据结构)。
vector
能自动调节大小的动态数组。
定义:
vector<数据类型> 容器名称(n,value); // 创建(数据类型)的(n)个元素容器(容器名称),初始化为(value)
操作
vector<data> v;
// 添加
v.push_back(value); // 在vector里加入value O(1)
// 访问(下标)
v[n]; // 访问第n个元素 O(1)
// 访问(迭代器)(指针)
vector<data>::iterator it; // 定义
it = v.begin(); // 迭代器指向容器的第一个元素
it = v.end(); // 迭代器指向容器尾部的下一个元素
it++; // 迭代器指向下一个位置
*it; // 获取迭代器指向的元素
for(it = v.begin(); it != v.end(); it++)
{
cout << *it << " ";
}
set
自动升序且不含重复元素的数据结构
set<int> se;
se.insert(x); // 插入x O(logn)
se.size(); // 查询大小 O(1)
se.erase(x); // 删除值为x的所有元素
se.find(x); // 查找为x的元素,如果存在返回迭代器,否则返回end()
se.count(x); // 查看se中x的数量
se.empty(); // 查看当前容器是否为空
se.lower_bound(s.begin(), s.end(), x); // 在se中查找第一个大于等于x的元素的迭代器
// 遍历
for(set<int>::iterator it = se.begin(); it != se.end(); it++)
{
cout << *it << endl;
}
for(auto it:se)
{
cout << *it << endl;
}
map
map<string, int> mp;
mp["1"] = 1; // 赋值
mp.size(); // 查看容器大小
mp.erase(x); // 删除容器中键为x的所有元素
mp.find(x); // 查找容器中键为x的元素,如果存在返回迭代器,否则返回mp.end()
mp.empty();
for(map<string, int>::iterator it = mp.begin(); it != mp.end(); it++)
{
cout << it -> first << " " << it -> second << endl;
}
pair
pair<int, int> pir = make_pair(x, y);
multiset、multimap
可重复,其余用法与set(map)一致
set > map > multiset > multimap
unordered_map
操作时间复杂度为O(1),未排序的map
bitset
二进制容器
bitset<10> s, t; // 创建一个长度为10的bitset
s.count(); // s中的1的数量
bitset<10> b(s); // 创建一个长度为10的bitset,且将s复制到bAKSZ-
这里空空如也
有帮助,赞一个