zoukankan      html  css  js  c++  java
  • STL之vector

      1 #include<iostream>
      2 #include<vector>
      3 #include<algorithm>
      4 using namespace std;
      5 
      6 //打印输出
      7 void PrintVector(vector<int>& v){
      8     for(vector<int>::iterator vec=v.begin(); vec!=v.end(); vec++ ){
      9         cout<<*vec<<" ";
     10     }
     11     cout<<endl;
     12 }
     13 
     14 
     15 //初始化
     16 void test01(){
     17     vector<int> v1;
     18     int arr[] = {10,20,30,40};
     19     vector<int> v2(arr,sizeof(arr)/sizeof(int)+arr);
     20     vector<int> v3(v2.begin(),v2.end());
     21     vector<int> v4(v3);
     22 
     23     PrintVector(v2);
     24     PrintVector(v3);
     25     PrintVector(v4);
     26 
     27 }
     28 
     29 //常用赋值操作
     30 void test02(){
     31     int arr[]={10,20,30,40};
     32     vector<int> v1(arr,arr+sizeof(arr)/sizeof(int));
     33     vector<int> v2;
     34     v2.assign(v1.begin(),v1.end());
     35 
     36     vector<int> v3;
     37     v3=v2;
     38 
     39     int arr_temp[]={100,200,300,400};
     40     vector<int> v4(arr_temp,arr_temp+sizeof(arr_temp)/sizeof(int));
     41     v4.swap(v1);
     42     PrintVector(v1);
     43     PrintVector(v2);
     44     PrintVector(v3);
     45     PrintVector(v4);
     46 }
     47 
     48 //大小操作
     49 void test03(){
     50     int arr_temp[]={100,200,300,400};
     51     vector<int> v4(arr_temp,arr_temp+sizeof(arr_temp)/sizeof(int));
     52 
     53     cout<<"size:"<<v4.size()<<endl;//元素的个数
     54     if(v4.empty()){
     55         cout<<"空!"<<endl;
     56     }
     57     else{
     58         cout<<"不空!"<<endl;
     59     }
     60     PrintVector(v4);
     61     //v4.reserve(8);//更改capacity但不更改size
     62     v4.resize(6,1);//同时更改capacity和size
     63     PrintVector(v4);
     64 
     65     cout<<v4.capacity()<<endl;//元素的容量
     66 }
     67 
     68 //存取数据
     69 void test04(){
     70     int arr_temp[]={100,200,300,400};
     71     vector<int> v4(arr_temp,arr_temp+sizeof(arr_temp)/sizeof(int));
     72     for( int i=0; i<v4.size(); i++ ){
     73         cout<<v4[i]<<" ";
     74     }
     75     cout<<endl;
     76     try{
     77         for( int i=0; i<v4.size()+5; i++ ){
     78             cout<<v4.at(i)<<" ";
     79         }
     80     }catch(...){
     81         cout<<"越界"<<endl;
     82     }
     83     //区别:at抛异常,[]不抛异常
     84 
     85     cout<<"front:"<<v4.front()<<endl;
     86     cout<<"back:"<<v4.back()<<endl;
     87 }
     88 
     89 //插入和删除
     90 void test05(){
     91    vector<int> v;
     92    v.push_back(10);
     93    v.push_back(20);
     94    //头插法
     95    v.insert(v.begin(),30);
     96    v.insert(v.end(),40);
     97    PrintVector(v);
     98    v.insert(v.begin()+2,100);//vector支持随机访问
     99    //支持数组下标的,一般都支持随机访问
    100    PrintVector(v);
    101 //删除操作
    102    v.erase(v.begin());
    103    PrintVector(v);
    104    v.erase(v.begin()+1,v.end());
    105    PrintVector(v);
    106    v.clear();
    107    cout<<"size:"<<v.size()<<endl;
    108 
    109 }
    110 
    111 //巧用swap缩减空间
    112 void test06(){
    113     vector<int> v;
    114     for( int i=0; i<100000; i++ ){
    115         v.push_back(i);
    116     }
    117     cout<<"size:"<<v.size()<<endl;
    118     cout<<"capacity:"<<v.capacity()<<endl;
    119 
    120     v.resize(10);
    121     cout<<"-----------------"<<endl;
    122     cout<<"size:"<<v.size()<<endl;
    123     cout<<"capacity:"<<v.capacity()<<endl;
    124 
    125     //收缩空间
    126     vector<int>(v).swap(v);
    127     cout<<"-----------------"<<endl;
    128     cout<<"size:"<<v.size()<<endl;
    129     cout<<"capacity:"<<v.capacity()<<endl;
    130 }
    131 
    132 int main()
    133 {
    134 
    135     test06();
    136 
    137     return 0;
    138 }
    有些目标看似很遥远,但只要付出足够多的努力,这一切总有可能实现!
  • 相关阅读:
    Pandas之groupby分组
    Pandas之isna,fillna
    Spark算子
    Spark算子
    常见排序算法
    Ubuntu18关机时出现 A stop job is running for ...导致关机很慢
    攻防世界-crypto-Decode_The_File(base64隐写)
    攻防世界-crypto-Decrypt-the-Message(Poem Codes-诗歌密码)
    ubuntu 安装比特币钱包
    netapp 常用命令
  • 原文地址:https://www.cnblogs.com/Bravewtz/p/10325804.html
Copyright © 2011-2022 走看看