条款4:可重用性最高的泛型容器--之一
在使用本条款所讲述的这个简单容器类时,你能够达到什么样的灵活程度?提示:通过本条款的学习,你将掌握更多关于成员模板的知识。
对于下面定长(fixed-length)的vector类,如何以最优的方式来实现其拷贝构造函数和拷贝赋值运算符函数?如何为构造过程和赋值过程实现最大限度的可用性?提示:考虑客户代码可能以什么样的方式来使用这些函数。
- template<typename T, size_t size>
- class fixed_vector
- {
- public:
- typedef T* iterator;
- typedef const T* const_iterator;
- iterator begin() { return v_; }
- iterator end() { return v_+size; }
- const_iterator begin() const { return v_; }
- const_iterator end() const { return v_+size; }
- private:
- T v_[size];
- };
注意:此处暂时不去关心这个类中的其他问题。我们并不打算使这个容器类完全符合STL规范,因此在这个类中至少存在着一个微妙的问题。选择这个类只是为了在一个简化的环境中说明一些重要问题。
解答
对于本条款的解答,我们的处理方式与前面将有所不同。这里给出一个推荐解答,然后你的任务就是对这个解答进行分析和讨论。现在,我们来看看条款5。