内容简介:动态数组如果 type 也是一个 STL 容器,定义时需要注意“>>”之间要加空格:和 vector 类似
vector 常见用法
特点
动态数组
定义 vector
vector<type> name;
如果 type 也是一个 STL 容器,定义时需要注意“>>”之间要加空格:
vector<vector<int> > name;
元素访问
v[index] vector<type>::iterator it
常用函数
-
push_back(x):元素后新增一个元素,复杂度为 O(1) -
pop_back(x):删除容器的尾元素,复杂度为 O(1) -
size():获得容器中的元素个数,复杂度为 O(1) -
clear():清空容器中所有元素,复杂度为 O(N) -
insert(it, x):在容器任意迭代器处插入元素,复杂度为 O(N) -
erase(it)[erase(it1, it2)]:删除容器中单个元素或者某一范围中的元素,复杂度为 O(N)
set 常见用法
特点
- 内部自动有序
- 不含重复元素
定义 set
和 vector 类似
元素访问
set 只能通过迭代器访问,遍历 set 方法:
for (set<type>::iterator it = st.begin(); it != st.end(); ++it) {
...
}
常用函数
-
insert(x):插入容器并自动递增 排序 和去重,复杂度为 O(logN) -
find(val):返回容器中对应值为 val 的迭代器,复杂度为 O(logN) -
erase(it[val])[erase(it1, it2)]:删除容器中元素,删除单个元素复杂度为 O(1) 或者 O(logN) ,删除多个元素复杂度为 O(it1\sim it2) -
size():获得容器中元素的个数,复杂度为 O(1) -
clear():清空容器中的元素,复杂度为 O(N)
string 常见用法
定义 string
string s = "xxx";
元素访问
string::iterator it
常用函数
-
+=:可以将两个 string 拼接起来 -
==/!=/>/<...:通过字典序比较两个 string 的大小 -
length()/size():返回 string 的长度,复杂度为 O(1) -
insert(n, string)[insert(it, it1, it2)]:将 string 插入 n 位置,或将另一 string 的 it1 到 it2 插入到当前 string 的 it 处,复杂度为 O(N) -
erase(it)[erase(it1, it2)][erase(n, length)]:删除容器中元素,复杂度为 O(N) -
clear():清空容器中的元素,复杂度为 O(1) -
substr(n, len):返回从 n 开始,长度为 len 的子串,复杂度为 O(len) -
string::npos:find 函数失配时的返回值 -
find(str)[find(str, n)]:从头或从 n 处开始匹配 str,复杂度为 O(nm) ,其中 n 为主串的长度,m 为 str 的长度 -
replace(n, len, str)[replace(it1, it2, str)]:将主串某一范围内的子串替换为 str,复杂度为 O(L) ,L 为主串的长度
map 常见用法
特点
- 提供多类型键值对映射
定义 map
map<type1, type2> name;
元素访问
- 通过下标
-
通过迭代器:
map<type1, type2>::iterator it,其中it->first是键,it->second是值
常用函数
-
find(key):返回键为 key 的映射的迭代器,复杂度为 O(logN) -
erase(it)[erase(key)][erase(it1, it2)]:删除元素,删除单个元素,迭代器复杂度为 O(1) ,通过键删除复杂度为 O(logN) ,删除所有元素复杂度为 O(it1\sim it2) -
size():获得映射的对数,复杂度为 O(1) -
clear():清空容器中所有元素,复杂度为 O(1)
queue 常见用法
定义 queue
和上述容器类似
元素访问
front() back()
常用函数
-
push(x)/pop(x):入队出队,复杂度都为 O(1) -
front()/back():获得队首、队尾元素,复杂度都为 O(1) -
empty():判断队列是否为空,复杂度为 O(1) -
size():返回队列中元素个数,复杂度为 O(1)
priority_queue 常见用法
特点
- 底层用堆实现
- 队首元素一定是当前队列中优先级最高的
定义 priority_queue
和上述容器类似
元素访问
只能通过 top()
访问队首元素
常用函数
-
push(x)/pop(x):入队出队,复杂度都为 O(logN) -
top():获得队首元素,复杂度为 O(1) -
empty():判断队列是否为空,复杂度为 O(1) -
size():返回队列中元素个数,复杂度为 O(1)
元素优先级设置
基本数据类型
以 int 为例
priority_queue<int, vector<int>, less<int> > name;
其中多出来的两个参数:
vector<int> less<int>
结构体
首先在结构体中重载运算符(使用 & 引用提高效率)
struct struct_name {
string name;
int value;
friend bool operator < (struct_name& s1, struct_name& s2) {
return f1.value < f2.value;
}
}
接着直接定义 struct_name 类型的优先队列
priority_queue<struct_name> name;
或者可以把重载函数写在结构体外面
struct cmp {
bool operator () (struct_name& s1, struct_name& s2) {
return f1.value < f2.value;
}
}
这时定义优先队列的方法为
priority_queue<int, vector<int>, cmp > name;
stack 常见用法
定义 stack
和上述容器类似
元素访问
只能通过 top()
访问栈顶元素
常用函数
-
push(x)/pop(x):入栈出栈,复杂度都为 O(1)-
top():获得栈顶元素,复杂度为 O(1) -
empty():判断队列是否为空,复杂度为 O(1) -
size():返回队列中元素个数,复杂度为 O(1)
-
pair 常见用法
特点
方便地绑定两个元素
定义 pair
pair<type1, type2> name;
元素访问
通过 name.first
和 name.second
访问
常用函数
-
==/!=/>/<...:比较,先比较 first,当 first 相等时再比较 second
常见用途
- 用来替代二元结构体,节省时间
- 作为 map 的键值对进行插入
algorithm 常用函数
max()、min() 和 abs()
max(x, y)/min(x, y)
用来返回 x 和 y 中的最大值/最小值, abs(x)
返回 x 的绝对值,如果需要返回三个数的最大值,可使用
max(x, max(y, z));
swap()
swap(x, y)
用来交换 x 和 y 的值
reverse()
reverse(it1, it2)
将 it1 到 it2 之间的元素反转,it 可以是数组指针或者容器的迭代器
next_permutation()
用来给出一个序列在全排列中的下一个序列
fill()
用来把数组或容器中的某一段区间赋为某个相同的值
sort()
sort 的使用方法为:
sort(首元素地址, 尾元素的下一个地址, [比较函数])
不填写比较函数时,默认进行递增排序,而比较函数的构造方法为:
bool cmp(type a, type b) {
return a > b;
}
lower_bound() 和 upper_bound()
二者需要用在有序数组或者容器中,其中
lower_bound(it1, it2, val) upper_bound(it1, it2, val)
它们的复杂度均为 O(log(it1 – it2))
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 技术管理者标准管理模板
- (六)C++中的类型转换与STL标准模板库
- 中兴通讯助力DevOps标准发布,喜获标准工作组成员授牌
- CODING 受邀参与 DevOps 标准体系之系统和工具 & 技术运营标准技术专家研讨会
- 中国电子技术标准化研究院雷虎:以标准为依托,构建区块链测试生态
- 网站模板 | 现代时尚创新创意投资组合HTML5模板设计
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
神经网络与机器学习(原书第3版)
[加] Simon Haykin / 申富饶、徐烨、郑俊、晁静 / 机械工业出版社 / 2011-3 / 79.00元
神经网络是计算智能和机器学习的重要分支,在诸多领域都取得了很大的成功。在众多神经网络著作中,影响最为广泛的是Simon Haykin的《神经网络原理》(第3版更名为《神经网络与机器学习》)。在本书中,作者结合近年来神经网络和机器学习的最新进展,从理论和实际应用出发,全面、系统地介绍了神经网络的基本模型、方法和技术,并将神经网络和机器学习有机地结合在一起。 本书不但注重对数学分析方法和理论的探......一起来看看 《神经网络与机器学习(原书第3版)》 这本书的介绍吧!