Guru of the Week 条款16:具有最大可复用性的通用Containers

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

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-lengthvector 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栏目的第1220期上面分析过那个最初的例子。(英国的读者注意了:在本期GotW中所给出的解答与British C++ user magazine Overload20期中的解答远不相同。事实上,在那一期中所提出的效率优化处理方案在我将给出的GotW

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值