GotW #16 Maximally Reusable Generic Containers
著者:Herb Sutter
翻译:kingofark
[声明]:本文内容取自www.gotw.ca网站上的Guru of the Week栏目,其著作权归原著者本人所有。译者kingofark在未经原著者本人同意的情况下翻译本文。本翻译内容仅供自学和参考用,请所有阅读过本文的人不要擅自转载、传播本翻译内容;下载本翻译内容的人请在阅读浏览后,立即删除其备份。译者kingofark对违反上述两条原则的人不负任何责任。特此声明。
Revision 1.0
Guru of the Week 条款16:具有最大可复用性的通用Containers
难度:8 / 10
(你能让这个简单的container class具有多大的可适应性(flexibility)?预告:在本条款中,你将要学到的关于成员模板方面的知识绝不只是一点点而已。)
[问题]
为下面的定长(fixed-length)vector class实现拷贝构造(copy construction)操作和拷贝赋值(copy assignment)操作,以提供最大的可用性(usability)。提示:请考虑用户代码(client code)可能会用它做那些事情。
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];
};
[注意]
(1) 不要修改代码的其它部分。给出这个container的目的并不是要将其纳入STL——它至少有一个严重的问题;给出它的目的在于,我们能在一个简化了的情形下说明一些重要的问题。
(2) 这里的代码是根据最初由Kevlin Henney给出的例子改编而来的。Jon Jagger曾在British C++ user magazine Overload栏目的第12和20期上面分析过那个最初的例子。(英国的读者注意了:在本期GotW中所给出的解答与British C++ user magazine Overload第20期中的解答远不相同。事实上,在那一期中所提出的效率优化处理方案在我将给出的GotW

本文围绕具有最大可复用性的通用容器展开,为定长vector class实现拷贝构造和赋值操作。分析了模板化构造和赋值运算符,指出其增强了操作的可适应性。还对比了预想方案和标准库风格方案,探讨了缺省构造函数的必要性,介绍了成员函数模板的应用。

1610

被折叠的 条评论
为什么被折叠?



