《C++程序设计教程》——初识STL

初识STL

标准模板库简称STL

8.1 STL简介

STL的内容从广义上讲分为三个主要部分:容器、迭代器、算法。
在C++的标准中,STL被组织在13个头文件中:< algorithm>、< deque>、< functional>、< iterator>、< vector>、< list>、< map>、< memory>、< numeric>、< queue>、< set>、< stack>、< utility>,使用不同的内容,需要包含不同的头文件。
1.容器
STL主要包含的容器主要有以下几种:

  • vector< T >
  • list< T>
  • queue< T>
  • stack< T>
  • deque< T>
  • priority< T>
  • set< T>
  • multiset< T>
  • map< key,value>
  • multimap< key,value>

2.迭代器
STL定义了5种类型的迭代器:输入迭代器、输出迭代器、前向迭代器、双向迭代器、随机访问迭代器。
3.算法

8.2 序列式容器

8.2.1 序列容器概述

标准库中提供的基本序列式容器包括:vector(向量)、deque(双向队列)、list(列表)

8.2.2 vector类模板

1.创建vector对象
(1)指定容器大小

vector<int> v1(10);
vector<string> v2(5);

(2)指定初始值

vector<int> v1(10,1);
vector<string> v3(3,"aa");

(3)列表初始化

vector<int> v1{1,2};
vector<string> v3{"a","b","c"};

(4)初始化状态为空

vector<int> v1;

2.获取容器容量大小

v.capacity();
v.size();

3.赋值函数

v.assign(n,elem); //将n个elem元素赋值给容器
v.assign(begin,end); //将[begin,end]区间中的元素赋值给容器

4.访问容器中的元素

v.at(int idx);

5.从尾部插入和删除元素

v.push_back(type elem& t);
v.pop_back();

6.获取头部和尾部元素

//返回容器的头部和尾部的引用
v.front();
v.back();
//返回头尾元素的迭代器(可以理解为指针)
v.begin();
v.end();

7.插入和删除元素

v.insert(pos,elem);
v.insert(pos,n,elem);
v.insert(pos,begin,end);
v.erase(pos);
v.erase(begin,end);

8.2.3 deque 模板

//添加元素
d.push_back();
d.push_front();
//删除元素
d.pop_back();
d.popfront();

8.2.4 list模板

//删除元素
lt.remove(elem);
//两个列表容器合并
lt.merge(list& lt1); //按从小到大排列
//排序功能
lt.sort(); 
//将容器lt1插入到迭代器it指示的位置前
lt.splice(iterator it,list& lt1);
//将lt1中的元素first插入到迭代器it指示的位置前
lt.splice(iterator it,list& lt1,iterator first);
//将lt1容器中[first.last)区间的元素插入到迭代器it指示的位置前面
lt.splice(iterator it,list& lt1,iterator first,,iterator last);

8.3 关联型容器

标准库提供四种关联型容器:set(集合)、multiset(多重集合)、map(映射)、multimap(多重映射)

8.4 迭代器

8.5 迭代器适配器

8.5.1 逆向迭代器

8.5.2 插入迭代器

8.5.3 流迭代器

8.6 迭代器辅助函数

8.7 算法

1. for_each()算法
2. find()算法
3. copy()算法
4. sort()算法
5. accumulate()算法

猜你喜欢

转载自blog.csdn.net/fengying2016/article/details/77540989