zoukankan      html  css  js  c++  java
  • vector基础

      1 //STL基础
      2 //容器
      3 //vector
      4 
      5 #include "iostream"
      6 #include "cstdio"
      7 #include "vector"//向量
      8 #include "iterator"//迭代器
      9 #include "numeric"//accunulate()求和算法需要
     10 #include "algorithm"//reverse()
     11 using namespace std;
     12 
     13 bool cmp(const int a,const int b)
     14 {
     15     return a>b;//或a-b
     16 }
     17 
     18 int main()
     19 {
     20     //创建vector对象
     21     vector<int> v1;//为空
     22     vector<int>v2(10);//初始长度为10,默认为10个0
     23     vector<double>v3(10,8.6);//初始化前10个数为8.6
     24     vector<double>v4(v3);//v4是v3的一个副本
     25 
     26     //尾部添加元素
     27     v3.push_back(8.6);
     28 
     29 
     30     //获取向量长度的方法
     31     int size03=v3.size();
     32     cout<<size03<<endl;
     33 
     34 
     35     //下标访问法
     36     for(int i=0;i<size03;i++){
     37         cout<<v3[i]<<" ";
     38     }
     39     cout<<endl;
     40     //迭代器访问法
     41     vector<double>::iterator it;//定义一迭代器
     42     for(it=v3.begin();it!=v3.end();it++){//v3.begin()为v3这个向量第一个元素的地址,
     43                                         // v3.end()为最后一个元素的后一个地址
     44         cout<<(*it)<<" ";               //注意.begin()为向量获取首元素地址的方法,括号不可忘
     45     }
     46     cout<<endl;
     47 
     48 
     49     //求和算法,accumulate() 头文件 #include "algorithm"返回值为整型,前两个参数为指针(前闭后开区间),
     50     //第三个参数a,为在区间元素和的基础上+a,不可省
     51     int sum02=accumulate(v2.begin(),v2.end(),42);
     52     cout<<sum02<<endl;
     53 
     54 
     55     //vector元素的插入
     56     v3.insert(v3.begin(),8);//在第0个元素前插入8,8成为第0个元素
     57     v3.insert(v3.begin()+2,1);//在第2个元素前插入1,1成为第2个元素
     58     v3.insert(v3.end(),8);//在向量末尾追加8
     59     v3.insert(v3.end()-1,99);//在第1个元素前插入99,99成为第2个元素
     60    //注意这种会出错,内存越界 v3.insert(v3.end()+1,99);
     61 
     62 
     63     //vector元素的删除
     64     v3.erase(v3.begin()+2);//s删除下表为2  即第三个元素
     65     v3.erase(v3.begin()+3,v3.begin()+5);//删除一段  删除2个(下标为3和4),(参数前闭后开)
     66 
     67     v3.clear();//清空向量,长度为0
     68 
     69 
     70     //vector元素反向排序
     71     //reverse()反向排列算法 头文件#include "algorithm"
     72     //可使向量中某段迭代器区间反向排列
     73     vector<int>v;
     74     reverse(v.begin(),v.end());
     75 
     76 
     77     //sort()算法,对vector内元素排序  #include "algorithm"
     78     sort(v.begin(),v.end());//默认升序
     79 
     80     //若要降序
     81     //法一
     82     /*bool cmp(const int a,const int b)
     83     {
     84         return a>b;//或a-b
     85     }*/
     86     sort(v.begin(),v.end(),cmp);
     87     //法二
     88     sort(v.rbegin(),v.rend());
     89     //法三
     90     sort(v.begin(),v.end(),greater<int>());
     91 
     92 
     93     //vector 去重   只去相邻的重的,所以常先排序在操作
     94     //unique()   #include "iostream"
     95     int size=unique(v.begin(),v.end())-v.begin();//因为并不把重复的元素真正删除,
     96                                                 //而是放于后面,返回去重后最后一个元素首地址
     97 
     98 
     99     //vector判断是否为空
    100     v.empty();
    101 
    102 
    103 }
    View Code
  • 相关阅读:
    git如何进行远程分支切换
    js中实现多态
    css选择器中:first-child与:first-of-type的区别
    js实现图片延时加载的原理
    认识AMD、CMD、UMD、CommonJS
    CORS详解
    JS实现继承的五种方式
    jQuery.fn.extend() 函数详解
    Java基础面试题
    Java面试题集
  • 原文地址:https://www.cnblogs.com/kimsimple/p/5667779.html
Copyright © 2011-2022 走看看