• C++ Primer 有感(标准库vector及迭代器)


    vector是同一种对象的集合,每个对象都有一个对应的整数索引值。和string对象一样,标准库将负责管理与存储元素相关的类存。引入头文件

    #include<vector>

    1.vector对象的定义和初始化

    vector<T> v1             vector保存类型为T的对象。默认构造函数,v1为空  
    vector<T> v2(v1)         v2是v1的一个副本  
    vector<T> v3(n,i)        v3包含n个值为i的元素  
    vector<T> v4(n)          v4含有值初始化的元素的n个副本  

    如果没有指定元素的初始化式,那么标准库将自行提供一个元素初始值进行值初始化。这个由库生成的初始值将用来初始化容器中的每个元素,具体的值为何,取决于存储在vector中元素的数据类型。

    如果vector保存内置类型如int,那么标准库将用0值创建元素初始化式

    vector<int> vv(10);      //10个元素,每个被初始化为0

    如果vector保存的是含有构造函数的类类型的元素,标准库将用该类型的默认的构造函数创建元素的初始化式

    vector<string> vvvv(10)      //10个元素,每个被初始化为空字符串

     

    还有第三种情况,元素类型可能是没有定义构造函数的类类型。这种情况下,标准库仍产生一个带初始值的对象,这个对象的每个成员进行了值初始化。


    2.vector对象的操作

    几种重要的操作

    v.empty()               如果v为空,则返回true,否则返回false  
    v.size()                返回v中元素的个数  
    v.push_back()           在v的末尾增加一个值为t的元素  
    v[n]                    返回v中位置为n的元素  
    v1=v2                   把v1中的元素替换为v2中元素的副本  
    v1==v2                  如果v1与v2相等,则返回true  
    !=,<,<=,>,>=            保持这些操作符惯有含义 

    size()返回相应vector类定义的size_type的值。

    vector::size_type             //error

    vector<int>::size_type    //ok

    push_back()函数将新元素添加到vector最后面。

     

    3.迭代器简介

    除了使用下标来访问vector对象的元素外,标准库还提供了访问元素的方法:使用迭代器。迭代器是一种检查容器内元素并且遍历元素的数据类型。

    1.容器的iterator类型

    每种容器类型都定义了自己的迭代器类型,如vector:

    vector<int> ::iterator iter;变量名为iter。

    2.begin和end操作

    每种容器都定义了一队命名为begin和end的函数,用于返回迭代器。如果容器中有元素的话,由begin返回的元素指向第一个元素。

    vector<int>::iterator iter=v.begin();

    若v不为空,iter指向v[0]。

    由end返回的迭代器指向最后一个元素的下一个,不存在,若v为空,begin和end返回的相同。

    *iter=0;

    iter++即将迭代器向前移动一个位置

    即将v[0]赋值为0,由end返回的不允许进行解操作。

    ==和!=操作符来比较两个迭代器,若两个迭代器指向同一个元素,则它们相等,否则不想等。

    迭代器使用举例:

    for(vector<int>::iterator iter=v.begin();iter!=v.end();iter++)

        *iter=0;

     

    将vector中的元素全部赋值为0;

  • 相关阅读:
    Docker安装MySQL&Redis
    使用VirtualBox+Vagrant快速搭建Linux虚拟机环境
    Java集合工具类的一些坑,Arrays.asList()、Collection.toArray()...
    1.docker常用命令
    4. 带有延迟时间的Queue(DelayQueue)
    3. 基于优先级的Queue(PriorityBlockingQueue)
    2. 常见的Queue
    1. 模拟Queue
    14. 线程调度
    13. 线程池
  • 原文地址:https://www.cnblogs.com/hehehaha/p/6332711.html
Copyright © 2020-2023  润新知