zoukankan      html  css  js  c++  java
  • C++标准库类模板vector

    vector是C++标准库STL中的一个重要的类模板,相当于更健壮的更多附加能力的数组

    使用vector前首先要包含头文件

    #include<vector> 

    1.vector的常用操作: 

    vector < int > vector_1(size)    //创建一个数组vector_1,长度为size
    	
    vector<int> vector_2(vector_1)    //创建一个数组vector_2,并把vector_1中所有元素复制过去
    	
    vector<int> vector_3(vector_1.begin(),vector_1.begin()+N)
    //创建一个数组vector_3,并把vector_1中前N个元素复制过去
    	
    vector < int > vector_4(size,num)    //创建一个数组vector_1,长度为size,初始化元素为num
    
    vector.resize(size);    //重新设置数组大小为size
    	
    vector.front()   //返回数组首元素 
    	
    vector.back()    //返回数组尾元素 
    	
    vector.begin()   //获取数组头指针 
    	
    vector.end()     //获取数组尾指针 
    	 
    vector.size()    //返回数组的长度 
    	
    vector[i]        //访问数组的第i-1个元素
    
    vector.insert(vector.begin()+N,elem);	//在数组的第N个元素后插入元素elem. 
    	
    vector.push_back(elem); //在数组的最后一个元素后插入一个元素elem. 
    
    vector.erase(vector.begin()+M,vector.begin()+N);
    //删除数组的第M个到第N个元素
    	
    	
    vector.pop_back(); //删除数组的最后一个元素 
    	
    vector.clear();	//清空数组中的元素 
    	
    vector.empty();  //判断数组是否为空,若为空返回true,不为空返回false
    

    例: 

    
    /***
    *Author:cyl
    *Time:2019-3-1 22:00:45
    *FUnction:Use of vector
    ***/
    #include <iostream>
    #include <iomanip>
    #include <cstring>
    #include <cstdio>
    #include <cstdlib>
    
    #include<vector> 
    using namespace std;
     
    int main(){
     
    	//vector是一个可存放任意类型数据的动态数组 
    	//数据类型除了int类型还可为其他的类型 ,size可为一个常量或变量
    	//初始化后向量integer中默认值为0; 
    	int size = 10; 
    	vector < int > integers(size); 
    	
    	//复制向量integer,复制为integers1 
    	vector<int> integers1(integers);
    	
    	//复制向量integer前5个元素,复制为integers2
    	vector<int> integers2(integers.begin(),integers.begin()+5);
    	
    	//创建 integers3长度为size,默认值为1 
    	vector < int > integers3(size,1);
    	
    	integers.front();//获取首元素 
    	integers.back();//获取尾元素 
    	
    	integers.begin();//获取头指针 
    	integers.end(); //获取尾指针 
    	 
    	
    	//获取向量 integers的长度 
    	cout<<"integers的长度:"<<integers.size()<<endl;
    	
    	
    	
    	//通过下标读取元素 
    	for(int i = 0;i<integers.size();i++){
    		cout<<setw(4)<<integers[i];
    	}
    	
    	//通过下标输入元素 
    	for(int i = 0;i<integers.size();i++){
    		cin>>integers[i];
    	}
    		
    	
    	//在 integers的第n个元素后插入元素123. 
    	int n = 1; 
    	integers.insert(integers.begin()+n,123);
    	
    	//在integers的最后一个元素后插入一个元素 123. 
    	integers.push_back(123); 
    	
    	//删除integers的第m个到第n个元素 (第1个到第3个) 
    	int m = 1;
    	n = 3; 
    	integers.erase(integers.begin()+m,integers.begin()+n);
    	
    	//删除integers的最后一个元素 
    	integers.pop_back(); 
    	
    	
    	//清空 integers中的元素 
    	integers.clear();
    	
    	//返回integers是否为空,若为空返回1,不为空返回0 
    	integers.empty();  
    	
    	return 0;
    }
    

    2.使用vector 创建二维数组

    vector< vector<int> > matrix_vector(SIZE_ROW, vector<int> (SIZE_COL));
    
    //创建一个二维数组,行数为SIZE_ROW,列数为SIZE_COL.
    /***
    *Author:cyl
    *Time:2019-3-14 22:00:45
    *FUnction:Use of 2d vector
    ***/
    #include <iostream>
    #include <iomanip>
    #include <cstring>
    #include <cstdio>
    #include <cstdlib>
    
    #include <vector>
    using namespace std;
    int main(){
    	
    	//创建一个3行3列数组 
    	vector< vector<int> > v2d(3, vector<int> (3));
    	
    	//赋值 
    	for(int i = 0;i<v2d.size();i++){
    		for(int j = 0;j<v2d[0].size();j++){
    			v2d[i][j] = i*v2d[0].size()+j;
    		}
    	}
    	
    	//输出 
    	for(int i = 0;i<v2d.size();i++){
    		for(int j = 0;j<v2d[0].size();j++){
    			cout<<setw(5)<<v2d[i][j];
    		}
    		cout<<endl;
    	}
    	cout<<endl<<endl;
    	
    	//将二维数组重新设置行列数 
    	//先重新设置行数再重新设置列数 
    	v2d.resize(8);
    	for(int i = 0;i<v2d.size();i++){
    		v2d[i].resize(8);
    	}
    	
    	//赋值 
    	for(int i = 0;i<v2d.size();i++){
    		for(int j = 0;j<v2d[0].size();j++){
    			v2d[i][j] = i*v2d[0].size()+j;
    		}
    	}
    	
    	//输出 
    	for(int i = 0;i<v2d.size();i++){
    		for(int j = 0;j<v2d[0].size();j++){
    			cout<<setw(5)<<v2d[i][j];
    		}
    		cout<<endl;
    	}
    	
    	return 0; 
    }
  • 相关阅读:
    密码学
    MD5
    计算机基础之操作系统
    python中列表之间求差集、交集、并集
    Python语言中各种进制相互转换
    计算机基础
    bzoj2705 [SDOI2012]Longge的问题
    bzoj3160 万径人踪灭
    codeforces 528D Fuzzy Search
    杜教筛 && bzoj3944 Sum
  • 原文地址:https://www.cnblogs.com/mydrizzle/p/10651241.html
Copyright © 2011-2022 走看看