posts - 131, comments - 12, trackbacks - 0, articles - 0
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理
标准库 vector 容器 
使用 vector 是必须包含头文件 <vector> 
# include <vector>


vector 是个类模板 可以存放不同的数据类型,包括用户自定义的类型
声明格式如下:
 class_template_name<type_name> obj_name;
ex: 
 vector<int> int_vec;   //int_vec 对象用来存发整型类的数据


vector 对象的定义和初始化
    vector 类的构造函数有如下几种:
      vector<type> v1; 
      vector<type> v2(v1);   对象v2是v1的副本
      vector<type> v3(n, i);   v3包含n 个值为i 的元素 
      vector<type> v4(n);   v4包含n个 值初始化 的副本
 
**值初始化 
   没有指定元素的初始化形式,那么标准库将自行提供一个元素初始化的值
进行 值初始化(value initializationd)具体类型取决于vector存储的类型。
 ex:   vector<int> ivec(10); //10 elements, each initialized to 0;
 
 vector 类中成员函数与基本操作
    1.判断容器是否为空,返回值为 bool类型       obj.empty();         
    2.返回容器中元素的个数                      obj.size();
    3.在容器末尾增加一个值为 type_value 的元素  obj.push_back(type_value);
    4.支持类似于数组的操作
        返回容器中位值为n的元素  obj[n]
        直接赋值替换 obj1 = obj2;  
        支持比较操作符   ==  !=  < > 
**  vector的下标操作与数组的不同之处
  vector 只能通过对确知的元素进行操作
  Ex:  vector<int>  obj;  //obj为空。
       obj[0];  //error    
       
标准库 iterator 迭代器
   除了用数组下标去访问,遍历容器中的元素,还可以通过使用迭代器(iterator)
   iterator 是C++标准库中用来控制对容器元素的访问的特定数据类型。有些容器既支持
下标访问,也可以用 iterator。 迭代器是更加通用的方法。每种容器都对应有不同的迭代器。


每种容器都对应 返回iterator数据成员的操作 begin() 和 end()
ex:  //obj is not empty
     vector<int>::iterator iter = obj.begin()  //用begin()返回迭代器指向容器的第一个元素  


end() 返回的是容器的最后一个元素的下一位。当容器为空时,和begin()的返回值相同
obj.end() 起一个哨兵(sentinel)的作用。表示已处理完容器中的所有元素。


**  vector的迭代器支持自增和解引用操作
       *iter = 0;   obj[0] = 0;  // obj[0] 和 iter 指的是同一个元素


用迭代器iterator编写 loop
for( vecotr<int>::iterator iter = int_vec.begin(); 
        iter != int_vec.end(); ++iter ){
     *iter = 0;   //将容器 int_vec 中所有元素值都置为0。              
}


const_iterator  
该类型迭代器指向的元素解引用后为 const类型的对象 不能被重写。
const_iterator 类型与 const 类的 iterator 不同。 前者自身的值可改变,但其所指的值不能改变。  
而 后者一旦初始化值就不能改变,不可有自增操作。 

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理