1.容器元素的条件
STL容器元素必须满足以下三个基本要求:
1)必须可透过copy构造函数进行复制。
这三个条件对任何class都是隐式成立的。下面几个条件,也应当获得满足:
4)对序列式容器而言,元素的default构造函数必须可用。
2.value语意与Reference语意
stl只支持value语意,不支持reference语意。一个显而易见的方法是以指针实现reference语意,但直接使用指针是不够安全的。好一点的办法是使用智能型指针,但请注意std::auto_prt是绝对不能用的,应该使用引用计数型的指针,如boost::shared_ptr。
STL容器元素必须满足以下三个基本要求:
1)必须可透过copy构造函数进行复制。
副本与原本必须相等,亦即所有相等测试的结果,原本与副本行为一致。所有容器都会在内部生成一个元素副本,并返回该暂时性副本,因此copy构造函数会被频繁地调用。所以copy构造函数应该尽可能的优化。
容器与算法都使用assignment操作符,才能以新元素改写旧元素。
这三个条件对任何class都是隐式成立的。下面几个条件,也应当获得满足:
4)对序列式容器而言,元素的default构造函数必须可用。
我们可以在没有给予任何初值的情况下,创建一个非空容器,或增加窗口的元素个数。这些元素都将以default构造函数完成。
5)对于某些动作,必须定义operator==以执行相等测试。如果你有搜寻需求,这一点特别重要。
2.value语意与Reference语意
stl只支持value语意,不支持reference语意。一个显而易见的方法是以指针实现reference语意,但直接使用指针是不够安全的。好一点的办法是使用智能型指针,但请注意std::auto_prt是绝对不能用的,应该使用引用计数型的指针,如boost::shared_ptr。
摘自c++标准程序库