zoukankan      html  css  js  c++  java
  • 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);
  • 相关阅读:
    mac 下安装jenkins
    Appium元素定位难点:tap坐标定位不准确
    Appium元素定位难点:混合式的native+webview
    Linux 上安装 appium
    springMVC之AOP
    设计模式之装饰模式
    设计模式之桥接模式
    MyBatis特殊字符转义
    python+urllib+beautifulSoup实现一个简单的爬虫
    设计模式之代理模式
  • 原文地址:https://www.cnblogs.com/qunews/p/3761327.html
Copyright © 2011-2022 走看看