目录
6.range-based for statement(c++11)例子
c++标准库包含STL。
1.标准库以header files形式呈现
-
c++标准库 #include<vector> 不带.h
-
新C #include<cstdio> 不带.h 前面加c
-
旧C #include<stdio.h> 带.h 仍然可用
2.namespce命名空间
将你写的class,function,template封装后放入一个namespace里,标准库的新headers的组件封装于std中。旧C headers内的组件不能封装在std中。
3.STL与OO
某种程度上,STL的概念与面向对象编程的原则相背, STL数据和算法是分离的而不是结合。
OO是把数据和算法放在一个class里面。
STL将数据和算法分开。 数据存储在容器里,使用算法进行操作。迭代器是这两者之间的粘合剂,让算法与容器可以进行交互。
4.STL六组件及其关系
容器 Containers,存放数据结构。
用来管理某个特定对象的集合。每一种容器都有自己的优点和缺点,在项目中根据不同的需求,使用不同的容器。容器可以是数组、链表或者类字典。
算法 Algorithms,进行数据处理的模板函数
用来处理的元素的集合。例如,可以进行搜索、排序等操作。
STL提供了一些标准算法来处理集合元素。这些算法一般提供最基本的功能,如搜索、排序、复制、修改和数值处理。
算法不是容器类的成员函数,而是全局函数。算法可以操作不同容器类型的元素,甚至可以操作用户自定义的容器类型。总之,既减少了代码量,又增强了性能。
迭代器 Iterators, 相当一种泛化的指针。
用于遍历对象集合的元素。这些集合可以是容器或容器的子集。每一个容器类都提供了它自己的迭代器类型。
根据迭代器所支持的操作,一般分为下面5种。
- 前向迭代器只能利用递增运算符进行前向迭代。像unordered_set、unordered_multiset、unordered_map和unordered_multimap这些容器都“至少”是用前向迭代器(某些情况下可以提供双向迭代器)。
- 双向迭代器是可以用递增运算符向前迭代,或者用递减运算符向后迭代。像list、set、multiset、map和multimap的迭代器都是双向迭代器。
- 随机访问迭代器具有双向迭代器的所有属性。此外,他们还可以进行随机访问。这种迭代器本身支持运算操作,可以改变偏移量,也可以利用关系运算符(