一、STL六大部件
1.容器(Cnotainers)
2.分配器(Allocators)
3.算法(Algorithms)
4.迭代器(Iterators):泛化的指针
5.适配器(Adapters):转换器
6.仿函数(Functors):所创建的类进行加减
二、一个精简的栗子
三、复杂度
1.O(1) O(c):常数时间
2.O(n):称为线性时间
3.O(log2n):称为次线性时间
4.O(n2),O(n3):平房时间,立方时间
5.O(2n):指数时间
6.O(nlog2n):介于线性及二次方成长的中间之行为模式
四、前闭后开区间
标准库的begin,指针指向第一个元素,end指向最后一个元素的后一个元素下一个位置。
1.遍历容器(旧方法)
container<T>::iterater ite = c.begin();//用iterater遍历某个容器
for (; ite != c.end(); ++ite )
/************************过去的写法*****************************/
2.遍历容器(新方法,c++11)range-based for statement
for (声明 : 容器) {
statement
}
for ( int i : { 2, 3, 5, 7, 9, 13, 17, 19 } ) {
std::cout << i << std::endl;
}
std::vector<double> vec;
...
for ( auto elem : vec ) {// elem是一个迭代器,取出后面vec的每一个元素
std::cout << elem << std::endl;
}
for ( auto& elem : vec ) {//auto加上引用,取出的每个元素也是引用
elem *= 3; //乘3
}
3.auto keyword
list<string> c;
...;
list<string>::iterator ite;
ite = :: find(c.begin(), c.end(), target);
list<string> c;
...
auto ite = ::find(c.begin(), c.end(), target);