STL的基本组件
1.容器container
容器是容纳、包含一组元素的对象。
两种基本类型:顺序容器和关联容器。
顺序容器
array(数组) 、vector(向量)、deque(双端队列)、forward_list(单链表)、list(列表)
关联容器(有序 or 无序unordered_)
set(集合)、multiset(多重集合)、
map(映射)、multimap(多重映射)
STL中的容器适配器(使用时需要包含相应的头文件)
*stack(栈)
*queue(队列)
*priority_queue(优先队列)
1迭代器iterator
迭代器提供了顺序访问容器中每个元素的方法。
1:对迭代器可以使用“++”运算符来获得指向下一个元素的迭代器:;
2:可以使用“*”运算符访问一个迭代器所指向的元素。如果元素类型是类或结构体,还可以使用“->”运算符直接访问该元素的一个成员,有些迭代器还支持通过“–”运算符获得指向上一个元素的迭代器,
2迭代器是泛化的指针。
使用独立于STL容器的迭代器,需要包含头文件。
3函数对象function object**
函数对象是一个行为类似函数的对象,对它可以向调用函数一样调用。
任何普通的函数和任何重载了()运算符的类的对象都可以作为函数对象使用,函数对象是泛化的函数。
使用STL的函数对象,需要包含头文件、
4.算法algorithm
STL包括70多个算法,包括查找算法、排序算法、消除算法、计数算法、比较算法、变换算法、置换算法和容器管理等。使用STL的算法,需要包含头文件。
总结
STL的基本组件
Iterators(迭代器)是算法和容器的桥梁
将迭代器作为算法的参数,通过迭代器来访问容器而不是把容器直接作为算法的参数。
将函数对象作为算法的参数而不是将函数所执行的运算作为算法的一部分。
使用STL中提供的或自定义的迭代器和函数对象,配合STL的算法,可以组合出各种各样的功能。
例题:从标准输入读入几个整数,存入向量容器,输出他们的相反数。
//从标准输入读入几个整数,存入vector容器中,再利用STL输出它们的相反数
#include <vector>
#include <string>
#include <iterator>
#include <algorithm>
#include <functional>
#include <iostream>
using namespace std;
int main()
{
int n = 5;
vector<int> vec(n);
//从标准输入读入向量容器的内容
for (int i = 0; i < n; i++)
{
cin >> vec[i];
}
//输出相反数
transform(vec.begin(), vec.end(), ostream_iterator<int>(cout, " "), negate<int>());
cout << endl;
return 0;
}