zoukankan      html  css  js  c++  java
  • Vector

    Vector用于存储对象数组

    常用方法

    1.push_back   在数组的最后添加一个数据

    2.pop_back    去掉数组的最后一个数据

    3.at                得到编号位置的数据

    4.begin           得到数组头的指针

    5.end             得到数组的最后一个单元+1的指针

    6.front        得到数组头的引用

    7.back            得到数组的最后一个单元的引用

    8.max_size     得到vector最大可以是多大

    9.capacity       当前vector分配的大小

    10.size           当前使用数据的大小

    11.resize         改变当前使用数据的大小,如果它比当前使用的大,者填充默认值

    12.reserve      改变当前vecotr所分配空间的大小

    13.erase         删除指针指向的数据项

    14.clear          清空当前的vector

    15.rbegin        将vector反转后的开始指针返回(其实就是原来的end-1)

    16.rend          将vector反转构的结束指针返回(其实就是原来的begin-1)

    17.empty        判断vector是否为空

    18.swap         与另一个vector交换数据

    在c++中,vector是一个十分有用的容器,下面对这个容器做一下总结。

    1 基本操作

    (1)头文件#include<vector>.

    (2)创建vector对象,vector<int> vec;

    (3)尾部插入数字:vec.push_back(a);

    (4)使用下标访问元素,cout<<vec[0]<<endl;记住下标是从0开始的。

    (5)使用迭代器访问元素.

    vector<int>::iterator it;
    for(it=vec.begin();it!=vec.end();it++)
        cout<<*it<<endl;

    (6)插入元素:    vec.insert(vec.begin()+i,a);在第i+1个元素前面插入a;

    (7)删除元素:    vec.erase(vec.begin()+2);删除第3个元素

    vec.erase(vec.begin()+i,vec.end()+j);删除区间[i,j-1];区间从0开始

    (8)向量大小:vec.size();

    (9)清空:vec.clear();

    2

    vector的元素不仅仅可以使int,double,string,还可以是结构体,但是要注意:结构体要定义为全局的,否则会出错。下面是一段简短的程序代码:

    复制代码
    #include<stdio.h>
    #include<algorithm>
    #include<vector>
    #include<iostream>
    using namespace std;
    
    typedef struct rect
    {
        int id;
        int length;
        int width;

      //对于向量元素是结构体的,可在结构体内部定义比较函数,下面按照id,length,width升序排序。
      bool operator< (const rect &a)  const
        {
            if(id!=a.id)
                return id<a.id;
            else
            {
                if(length!=a.length)
                    return length<a.length;
                else
                    return width<a.width;
            }
        } }Rect; int main() { vector<Rect> vec; Rect rect; rect.id=1; rect.length=2; rect.width=3; vec.push_back(rect); vector<Rect>::iterator it=vec.begin(); cout<<(*it).id<<' '<<(*it).length<<' '<<(*it).width<<endl; return 0; }
    复制代码

     3  算法

    (1) 使用reverse将元素翻转:需要头文件#include<algorithm>

    reverse(vec.begin(),vec.end());将元素翻转(在vector中,如果一个函数中需要两个迭代器,

    一般后一个都不包含.)

    (2)使用sort排序:需要头文件#include<algorithm>,

    sort(vec.begin(),vec.end());(默认是按升序排列,即从小到大).

    可以通过重写排序比较函数按照降序比较,如下:

    定义排序比较函数:

    bool Comp(const int &a,const int &b)
    {
        return a>b;
    }
    调用时:sort(vec.begin(),vec.end(),Comp),这样就降序排序。

    C++编程语言中有一种叫做Vector的应用方法,它的作用在实际编程中是非常重要的。在这里我们将会为大家详细介绍一下C++ Vector的相关应用技巧及基本内容,希望能给大家带来一些帮助。

    (1)vector< 类型 > 标识符 ;

    (2)vector< 类型 > 标识符(最大容量) ;

    (3)vector< 类型 > 标识符(最大容量,初始所有值);

    (4) int i[4] = {12,3,4,5};

    1. vector< 类型 > vi(i , i+2); //得到i索引值为3以后的值 ;  

    (5)vector< vector<int> > //vi 定义2维的容器;记得一定要有空格,不然会报错

    1. vectorint > line   
    2. // 在使用的时候一定要首先将vi个行进行初始化;   
    3. for(int i = 0 ; i 10 ; i ++)  
    4. {  
    5. vector.push_back(line);  
    6. }  
    7. /// 个人认为使用vector定义二维数组很好,
      因为是长度可以不预先确定。很好。 

    (6)C++ Vector排序

    1. vectorint > vi ;   
    2. vi.push_back(1);  
    3. vi.push_back(3);  
    4. vi.push_back(0);  
    5. sort(vi.begin() , vi.end()); /// /小到大  
    6. reverse(vi.begin(),vi.end()) /// 从大道小 

    (7)顺序访问

    1. vector int > vi ;   
    2. for( int i = 0 ; i 10 ; i ++)  
    3. {  
    4. vector.push_back(i);  
    5. }   
    6. for(int i = 0 ; i 10 ; i ++) /// 第一种调用方法  
    7. {  
    8. cout <<vector[i] <<" " ;   
    9. }  
    10. for(vector<int>::iterator it = vi.begin() ; 
    11. it !=vi.end() ; it++) ///第二种调用方法  
    12. {  
    13. cout << *it << " " ;  

    (8)寻找

    1. vector int > vi ;   
    2. for( int i = 0 ; i 10 ; i ++)  
    3. {  
    4. vector.push_back(i);  
    5. }   
    6. vector int >::interator it = find(vi.begin() , vi.end,3) ;  
    7. cout << *it <endl ; ///返回容器内找到值的位置。 

    (9)使用数组对C++ Vector进行初始化

    1. int i[10] ={1,2,3,4,5,6,7,78,8} ;  
    2. ///第一种   
    3. vector<int> vi(i+1,i+3); ///从第2个元素到第三个元素  
    4. for(vector <int>::interator it = vi.begin() ; 
    5. it != vi.end() ; it++)  
    6. {  
    7. cout << *it <<" " ;   

    (10) 结构体类型

    1. struct temp  
    2. {  
    3. public :  
    4. string str ;   
    5. public :  
    6. int id ;  
    7. }tmp  
    8. int main()  
    9. {  
    10. vector <temp> t ;   
    11. temp w1 ;   
    12. w1.str = "Hellowor" ;  
    13. w1.id = 1 ;   
    14. t.push_back(t1);  
    15. cout <w1.str << "," <<w1.id <<endl ;   
    16. return 0 ;   

    C++ Vector的基本介绍就为大家介绍到这里。

  • 相关阅读:
    sql
    java常见异常
    call的用法及NodeList与Array的区别
    os模块
    random模块
    time模块
    序列化模块
    模块介绍
    内置函数
    匿名函数-lambda
  • 原文地址:https://www.cnblogs.com/yuyixingkong/p/3933542.html
Copyright © 2011-2022 走看看