c++笔记5

来源:互联网 发布:js返回上一页并刷新 编辑:程序博客网 时间:2024/05/16 19:29
1.泛型算法中,所谓泛型,指的是两方面:这些算法可以作用于各种不同的容器类型,而这些容器又可以容纳多种不同的类型的元素。
2.为容器类型提供通用接口是设计库的目的!容器提供了不同的性能折衷方案,可以改变容器类型对优化系统性能来说颇有价值。通常不需要修改代码,只需改变类型声明,用另一种容器代替即可优化程序的性能。
3.三种顺序容器和三种容器适配器:vector,list,deque;stack, queue, priority_queue;
4.为了使程序清晰简短,容器类型最常用的构造函数是默认构造函数。
5.接受容器大小做形参的构造函数只适用于顺序容器,关联容器不支持。
6.容器内元素类型的约束:支持赋值运算;对象可以复制。
7.vecotr and deque的迭代器提供额外的运算。两类:一,iter1 - iter2;二,>, >=, <=, <
8.避免存储end操作返回的迭代器.添加或删除deque或vector容器内元素都会导致存储的迭代器失败。
9.所有的容器类型都支持关系操作符实现两个容器的比较。基于容器内元素比较,使用元素提供的关系操作符实现容器的关系运算。
10.使用越界的下标或调用空容器的front或back函数,都会导致严重的错误。使用at成员函数如果给出的下表无效会抛出out_of_range异常。
11.与赋值相关的操作符都作用于整个容器。赋值后左右两个容器的长度相等。如这个例子:
c1.erase(c1.begin(), c1.end()) ; c2.insert(c1.begin(), c2.begin(). c2.end());
还有swap()例如c1.swap(c2);c1c2类型必须一致。
12.assign用在类型不同但是兼容的时候进行赋值。带有一对迭代器参数的assign操作允许我们将一个容器的元素赋给另一个不同类型的容器。
13.使用swap()操作节省删除元素的成本。
14.vector容器的自增长。实际应用中,vector的增长效率比list,deque更高。通常来说,除非找到使用其他容器的更好理由,否则vector容器都是最佳选择。