vector基本用法

Vector作为STL容器中的一员,使用频率非常高,因此对其基本用法和实用技巧进行记录,便于后期查询使用。

基本用法 

#include <iostream>
#include <vector>

using namespace std;

/*
    empty()            判断vector是否为空
    size()            获取vector中元素的个数
    clear()            清空vector
    erase()            删除vector中指定内容的元素
    push_back()        尾部插入元素(效率高)
    pop_back()        尾部删除元素(效率高)
    insert()        指定位置插入元素(效率低)
    sort()            排序
    reverse            反转
*/
 
int main()
{
    vector<int> arr;
    
    arr.push_back(6);
    arr.push_back(7);
    arr.push_back(5);
    arr.push_back(3);
    arr.push_back(4);
    
    arr.pop_back(); // 删除4
    
    sort(arr.begin(), arr.end()); // 排序
    
    reverse(arr.begin(), arr.end()); // 反转
    
    // 7 6 5 3
    for(int i = 0; i < arr.size(); i++)
    {
        cout << arr[i] << ends;
    }
    cout << endl;
    
    cout << arr.size() << endl; // 获取元素个数
    
    arr.clear(); // 清空
    
    cout << arr.size() << endl; // 获取元素个数

    return 0;
}    

迭代删除(有坑) 

#include <iostream>
#include <vector>

using namespace std;
 
int main()
{
    vector<int> arr;
    
    arr.push_back(6);
    arr.push_back(7);
    arr.push_back(8);
    arr.push_back(8);
    arr.push_back(9);
    arr.push_back(10);

    // erase接口返回的iterator指向下一个原生,此时不需要再次移动
    for(vector<int>::iterator it = arr.begin(); it != arr.end(); )
    {
        if(*it == 8)
        {
            it = arr.erase(it); // 等效于arr.erase(it);
        }
        else
        {
            ++it;
        }
    }
    
    for(int i = 0; i < arr.size(); i++)
    {
        cout << arr[i] << ends;
    }
    cout << endl;

    return 0;
}    

查找(安全)

#include <iostream>
#include <vector>

using namespace std;
 
int main()
{
    vector<int> arr;
    
    arr.push_back(6);
    arr.push_back(7);
    arr.push_back(8);
    arr.push_back(8);
    arr.push_back(9);
    arr.push_back(10);

    vector<int>::iterator it = find(arr.begin(), arr.end(), 8);
    if(it != arr.end())
    {
        cout << "find" << endl;
    }
    else
    {
        cout << "Not find" << endl;
    }

    return 0;
}    
原文地址:https://www.cnblogs.com/chusiyong/p/12849041.html