容器定义的类型别名与begin 和 end 成员

容器定义的类型别名

size_type

无符号整型,足以存储此容器类型的最大可能容器长度

iterator

此容器类型的迭代器类型

const_iterator

元素的只读迭代器类型

reverse_iterator

按逆序寻址元素的迭代器

const_reverse_iterator

元素的只读(不能写)逆序迭代器

difference_type

足够存储两个迭代器差值的有符号整型,可为负数

value_type

元素类型

reference

元素的左值类型,是 value_type& 的同义词

const_reference

元素的常量左值类型,等效于 const value_type&

使用容器定义类型的表达式看上去非常复杂:

// iter is the iterator type defined by list<string>
list<string>::iterator iter;
// cnt is the difference_type type defined by vector<int>
vector<int>::difference_type cnt;

iter 所声明使用了作用域操作符,以表明此时所使用的符号 :: 右边的类型名字是在符号 iter 左边指定容器的作用域内定义的。其效果是将 iter 声明为 iterator 类型,而 iterator 是存放 string 类型元素的 list 类的成员。

 

begin 和 end 成员

 

begin 和 end 操作产生指向容器内第一个元素和最后一个元素的下一位置的迭代器。

 

c.begin()

返回一个迭代器,它指向容器 c 的第一个元素

c.end()

返回一个迭代器,它指向容器 c 的最后一个元素的下一位置

c.rbegin()

返回一个逆序迭代器,它指向容器 c 的最后一个元素

c.rend()

返回一个逆序迭代器,它指向容器 c 的第一个元素前面的位置

 

上述每个操作都有两个不同版本:一个是 const 成员,另一个是非 const 成员。这些操作返回什么类型取决于容器是否为 const。如果容器不是 const,则这些操作返回 iterator 或 reverse_iterator 类型。如果容器是 const,则其返回类型要加上 const_ 前缀,也就是 const_iterator 和const_reverse_iterator 类型。

 

posted @ 2018-05-04 16:13  刘-皇叔  阅读(620)  评论(0)    收藏  举报