• STL之vector


    1.添加 vector 头文件.

    1:  #include <iostream>
    2:  #include <vector>
    3:  
    4:  using namespace std;

    2.构造函数

    //默认构造函数v1
        vector<int> v1; //默认构造函数v1
        v1.push_back(1);//在容器的最后添加一个值为t的数据,容器的size变大
        v1.push_back(3);
        v1.push_back(5);
        v1.push_back(7);
    
        //将一个容器初始化为另一个容器的副本
        vector<int> v2(v1);//或v2=v1;或vector<typeName> v2(v1.begin(), v1.end());//v2是v1的一个副本,若v1.size()>v2.size()则赋值后v2.size()被扩充为v1.size()。
    
        vector<int> v3(5,8);//v3包含5个值为8的元素 //只适合抗美顺序容器
    
        vector<int> v4(10); //v4含有值初始化的10个元素 //只适合抗美顺序容器

    3.vector操作

    //vector操作
        //assign 函数
        v4.assign(v1.begin(),v1.end());
        v1.assign(2,4);  //v1包含2个4.
        
        //at(int idx)    //传回索引idx所指的数据,如果idx越界,抛出out_of_range.
        int iTemp = v4.at(0); 
        
        //back()  //传回最后一个数据,不检查这个数据是否存在。
        int iBack = v4.back();
        //begin()  //解决一个随机访问迭代器第一个元素
        vector<int>::iterator it = v4.begin();
        
        //capacity() //返回容器中数据个数。
        int iCap = v4.capacity();
        //clear()    //移除容器中所有数据。
        v1.clear();
        //empty()    //判断容器是否为空。
        if (v4.empty())
        {
            cout << "v4 is empty!";
        }
        //end()         //指向迭代器中的最后一个数据地址。
        it = v4.end();
        //erase(pos)    //删除pos位置的数据,传回下一个数据的位置。pos beg end 是迭代器.
        //erase(beg,end)//删除[beg,end)区间的数据,传回下一个数据的位置。
        v4.erase(v4.begin()+2);  //1 3 7
        v4.erase(v4.begin()+1,v4.end()); //1
        
        //insert() 插值操作
        /*
        insert(pos,elem)    //在pos位置插入一个elem拷贝,传回新数据位置。
        insert(pos,n,elem)  //在pos位置插入n个elem数据。无返回值。
        insert(pos,beg,end) //在pos位置插入在[beg,end)区间的数据。无返回值。*/
        v4.insert(v4.begin()+1,3);  //1 3
        v4.insert(v4.begin()+2,2,5);//1 3 5 5
        v4.insert(v4.begin()+3,v3.begin()+2,v3.begin()+4); // 1 3 5 8 8 5
    
        //front() 返回第一个值
        int iFront = v4.front();
        
        //get_allocator 使用构造函数返回一个拷贝. 返回vector的内存分配器 
        vector<int>v5( v4.begin()+1, v4.begin()+3, v4.get_allocator( ));//把V4的内存分配器作为一个参数参与构造V5。这样,它们两个用一个内存分配器了 // 3 5
        
        //max_size()返回容器中能够放入(最大)数据的数量。在应用中没什么意义.
        int imaxSize = v5.max_size();  //4G内存是4*1024*1024*1024=1073741823个字节
        
        //pop_back() 删除最后一个数据。
        //push_back(elem) 在尾部加入一个数据。
        v4.pop_back();
        v4.push_back(5);
    
        //rbegin()传回一个逆向队列的第一个数据的位置
        //rend()传回一个逆向队列的最后一个数据的下一个位置。
        vector<int>::iterator it_beg = v4.begin();
        for (;it_beg != v4.end();it_beg++)
        {
            cout << *it_beg << " "; //正向输出每个数据.
        }
        cout <<  endl;
        
        vector<int>::reverse_iterator ir_beg = v4.rbegin();
        for (;ir_beg != v4.rend();ir_beg++)
        {
            cout << *ir_beg << " ";//逆向输出每个数据.
        }
        cout <<  endl;
    
        //resize(num)重新指定队列的长度。
        v4.resize(5);//保留前五位数据.
    
        //reserve()保留适当的容量。
        v4.reserve(6);
        //size()
        int iSize = v4.size();
        
        //元素互换 
        v4.push_back(9);
        v4.swap(v3);
        swap(v4,v3);
  • 相关阅读:
    AE 线编辑
    ArcEngine判断要素(feature)是否为multipart feature及分解(炸开)代码
    AE二次开发技巧之撤销、重做
    ArcEngine数据编辑--选择要素
    java语言体系的技术简介之JSP、Servlet、JDBC、JavaBean(Application)
    MVC开发模式详解
    数据库设计中常见表结构的设计技巧
    Eclipse 保存文件时自动格式化代码
    优化你的java代码性能
    Hibernate 与mybatis的区别
  • 原文地址:https://www.cnblogs.com/qunews/p/3761327.html
Copyright © 2020-2023  润新知