STL第四课

来源:互联网 发布:linux cpu使用情况 编辑:程序博客网 时间:2024/06/06 01:00

关于auto_ptr作为参数的传递问题:
你可能会认为, 将auto_ptr以pass by reference方式传递就会万事大吉了. 然而这种行为却会使"拥

有权"的概念变得难以捉摸, 因为面对一个"透过reference而获得auto_ptr"的函数,你根本无法预知

拥有权是否被转交. 所以by reference方式传递auto_ptr是非常糟糕的设计, 应该全力避免.

考虑到auto_ptr的概念, 我们倒是可以运用const reference, 向函数传递拥有权. 然而这也十分危

险, 因为当你传递一个constant reference时, 通常预期该对象不会被更改.幸好通过某些实作技巧,

我们可以令constant reference 无法交出拥有权.
const std::auto_ptr<int> p(new int);
*p = 42;
...
*p = 18;
...
*p = *q;

这里const auto_ptr比较类似常数指针(T* const p),即若p=q;则ERROR

auto_ptr实作细目:Page-78(PDF文档)
auto_ptr声明于<memoroy>

STL的基本思想就是将数据和算法分离。
STL组件:
三大关键:容器、迭代器、算法
容器用来管理某类对象的集合。
迭代器用来在一个对象群集的元素上进行遍历。

总得来说,容器分为两种:
1.序列化容器,STL提供三个定义好的:vector,deque, list;
2.关联式容器(位置取决于元素值和插入次序):set, multiset, map, multimap
算法用来处理群集内的元素,透过迭代器,我们只需撰写一次算法,就可以将它应用于任意容器上。


关联容器自动对其元素排序。

 下面为容器种类图: