首页 > 代码库 > 20140814 explicit

20140814 explicit

1、explicit

explicit   只对构造函数起作用,用来抑制隐式转换

如:  
  class   A  

{  
     A(int   a);  
}; 


int   Function(A   a);  
当调用   Function(2)   的时候,2   会隐式转换为   A   类型。这种情况常常不是程序员想要的结果,所以,要避免之,就可以这样写:  
class   A

{  
    explicit   A(int   a);  
};  
int   Function(A   a);  
这样,当调用   Function(2)   的时候,编译器会给出错误信息(除非   Function   有个以   int   为参数的重载形式),这就避免了在程序员毫不知情的情况下出现错误。
总结:explicit   只对构造函数起作用,用来抑制隐式转换。

2、序列

  序列的迭代器至少要是正向迭代器

(1)vector-向量

  • 是数组的一种类的表示,提供自动内存管理,动态改变vector的长度
  • 在尾部插入和删除的时间复杂度是固定;在头部和中间插入和删除元素是线性时间复杂度。
  • 反转容器rbegin()和人的()。
  • vector是最简单的模板类型,一般默认用它,除非其他序列类型的特殊优点能够更好的满足程序要求

(2)deque-双端队列

  • 在开始和结尾处插入和删除元素的时间复杂度都是固定的
  • 如果多数操作都发生在开始和结尾处,则应该使用deque数据结构
  • vecotr和deque都都提供对元素的随机访问和序列中部执行插入和删除操作,但vector的执行速度会快些,因为vector对象的设计更加简单。