• 66)vector基础总结


    基本知识:

        

    1)vector 样子  其实就是一个动态数组:


        

    2)vector的基本操作:    

        

     3)vector对象的默认构造

        

        对于类  添加到  容器中  要有  拷贝构造函数---》 这个注意

    ------(1) 利用  v1.size()  来求容器中元素的个数

      

          

     1 #include<iostream>
     2 #include<vector>
     3 using namespace std;
     4  void hanshu()
     5  {
     6      vector<int> v1;
     7      v1.push_back(2);
     8      v1.push_back(3);
     9      v1.push_back(4);
    10   //这个 size()  就是在求容器的长度
    11      cout<<v1.size()<<endl;
    12 //
    13  }
    14  int main()
    15  {
    16     hanshu();
    17      return 0;
    18  }

      

     ---------(2)求这个动态数组的最后一个元素和 第一个元素

        

            

     1 #include<iostream>
     2 #include<vector>
     3 using namespace std;
     4  void hanshu()
     5  {
     6      vector<int> v1;
     7      v1.push_back(2);
     8      v1.push_back(3);
     9      v1.push_back(4);
    10 
    11      //求解第一个元素值
    12      cout<<v1.front()<<endl;
    13      //求解最后一个元素的值
    14      cout<<v1.back()<<endl;
    15 
    16  }
    17  int main()
    18  {
    19     hanshu();
    20      return 0;
    21  }

       ---------(3)修改容器的头部信息

     1 #include<iostream>
     2 #include<vector>
     3 using namespace std;
     4  void hanshu()
     5  {
     6      vector<int> v1;
     7      v1.push_back(2);
     8      v1.push_back(3);
     9      v1.push_back(4);
    10      //函数返回值作为左值成立,那么是返回一个引用
    11     //修改第一个元素值
    12      v1.front()=11;
    13 
    14  }
    15  int main()
    16  {
    17     hanshu();
    18      return 0;
    19  }

    ----------------------(4)vector赋值

          

      

    ---------------(5)vector末尾添加或移除数据

          

      --------------(6)存取vector数据

              

        ---(7)vector中的拷贝构造函数,如果没有自己定义  那么就是  浅拷贝,浅拷贝,浅拷贝,浅拷贝,浅拷贝----

          

        主要是由于push_back函数引起的。这个函数会对传递进来的参数进行一次拷贝(调用拷贝构造函数),并将其添加到vector中。如果对象没有拷贝构造函数,编译器会为其生成一个,但是这个编译器生成的拷贝构造函数只是进行了一次浅拷贝,在本例中就是只是复制了str的值,也就是"strend micro"的地址,即拷贝后的对象和原对象的str都是指向同一块内存区域,但是这个拷贝的对象和原对象的析构函数又都会执行,这里就会delete两次。(注意,即使对于一个空类,编译器也会默认生成4个成员函数:默认构造函数,析构函数,拷贝构造函数,赋值函数。)

    -------------------(8)迭代器的基本原理

          

    ----------(9)vector的数据删除

        

     1 理论知识
     2     vector.clear();    //移除容器的所有数据
     3     vec.erase(beg,end);  //删除[beg,end)区间的数据,返回下一个数据的位置。
     4     vec.erase(pos);    //删除pos位置的数据,返回下一个数据的位置。
     5 简单案例:
     6 删除区间内的元素
     7 vecInt是用vector<int>声明的容器,现已包含按顺序的1,3,5,6,9元素。
     8 vector<int>::iterator itBegin=vecInt.begin()+1;
     9 vector<int>::iterator itEnd=vecInt.begin()+2;
    10 vecInt.erase(itBegin,itEnd);
    11 //此时容器vecInt包含按顺序的1,6,9三个元素。
    12 
    13 假设 vecInt 包含1,3,2,3,3,3,4,3,5,3,删除容器中等于3的元素
    14 for(vector<int>::iterator it=vecInt.being(); it!=vecInt.end(); )    //小括号里不需写  ++it
    15 {
    16    if(*it == 3)
    17    {
    18         it  =  vecInt.erase(it);       //以迭代器为参数,删除元素3,并把数据删除后的下一个元素位置返回给迭代器。
    19          //此时,不执行  ++it;  
    20    }
    21    else
    22    {
    23        ++it;
    24    }
    25 }
    26 
    27 //删除vecInt的所有元素
    28 vecInt.clear();            //容器为空
  • 相关阅读:
    阿里云下Linux MySQL的安装
    protocol buffer相关
    Unity NGUI UIPanel下对粒子的剪裁
    NGUI中UILabel用省略号替换超出显示区域的内容
    Go交叉编译
    Unity3d使用未破解的TexturePacker
    编程之美 找出符合条件的整数
    算法导论~
    hadoop资料汇总(网上)
    SOE 中调用第三方dll
  • 原文地址:https://www.cnblogs.com/xiaoyoucai/p/8283541.html
Copyright © 2020-2023  润新知