C++ vector 容器使用

依然范特西╮ 提交于 2019-12-02 04:55:22

C++ vector 容器使用

vector 作用在此不做解释了

使用需要引入头文件 #include <vector>

自带函数如下

1.push_back       在容器的最后添加一个数据
2.pop_back        去掉容器的最后一个数据
3.at              得到下标位置的数据
4.begin           得到容器第一个数据的指针
5.end             得到容器最后一个数据下一个的指针
6.front           得到容器第一个数据的引用
7.back            得到容器最后一个数据的引用
8.max_size        得到容器最大可以存放数据个数
9.capacity        当前vector分配的空间可以存储数据个数
10.size           当前存储的数据个数
11.resize         改变容器可以存储数据个数
12.reserve        改变容器分配空间的大小
13.erase          删除指针指向的数据项
14.clear          清空当前的vector
15.rbegin         返回容器数据反转后的开始指针(原来的end - 1)
16.rend           返回容器反转后结束指针(原来的begin - 1)
17.empty          判断容器是否为空
18.swap           与另一个容器交换数据
// vector 运用实例如下

// Pro1.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"

#include <vector>

using namespace std;

int main()
{
    // 定义 存储 int 数据类型的 容器
    vector<int> intVec;

    // 判断容器是否为空
    if (intVec.empty())
    {
        std::cout << "intVec 为空" << endl;
    }

    //设置容器 intVec 预留 10个存储空间,
    intVec.reserve(10);

    for (int i = 0; i < 5; ++i)
    {
        // 在 intVec 的最后添加一个数据
        intVec.push_back(i);
    }

    // intVec 存储了几个数据
    int size = intVec.size();
    std::cout << "size : " << size << endl;

    // 当前 intVec 分配的存储大小
    // size() 是当前存储的数据个数, capacity() 是 intVec 可以存储的个数
    // capacity >= size
    // 当添加数据存储空间不足时,会自动扩展一批存储空间,此时 capacity()变大
    int capacity = intVec.capacity();

    std::cout << "capacity : " << capacity << endl;

    // 获取第一个数据指针
    //intVec.begin();

    // 获取最后一个数据 + 1 的指针
    // intVec.end()

    // 使用迭代器遍历访问数据
    vector<int>::iterator it;

    // 在第 2 个位置插入数据 100
    intVec.insert(intVec.begin() + 2, 100);

    // intVec 存储了几个数据
    size = intVec.size();
    std::cout << "size_ : " << size << endl;

    for (it = intVec.begin(); it != intVec.end(); ++it)
    {
        std::cout << *it << endl; // 0, 1, 100, 2, 3, 4
    }

    // 删除第 3 个数据
    intVec.erase(intVec.begin() + 3);

    // intVec 存储了几个数据
    size = intVec.size();
    std::cout << "size__ : " << size << endl;

    // 删除区间 intVec.begin() 到 intVec.begin() + 2 内的数据
    intVec.erase(intVec.begin(), intVec.begin() + 2);

    // intVec 存储了几个数据
    size = intVec.size();
    std::cout << "size___ : " << size << endl;

    // 删除最后一个数据
    intVec.pop_back();

    // 获取第 0 个数据
    int n = intVec.at(0);

    // 获取数组头的引用
    n = intVec.front();

    // 可以将 front() 作为左值使用
    // 设置第 0 个数据的值为 1000
    intVec.front() = 1000;

    std::cout << "front : " << intVec.front() << endl;

    // 获取最后一个数据的引用
    n = intVec.back();
    n = 555;
    std::cout << "back : " << intVec.back() << endl;

    // 设置容器的长度为 n,使其能容纳 n 个数据
    // 如果 n 小于容器当前 size,则删除多余的数据
    // 否则将容器长度扩充为 n,新添加空间填充初始化数据
    intVec.resize(15);

    // 同上,默认将新添加空间数据设置为 1
    intVec.resize(20, 1);

    size = intVec.size();
    std::cout << "size____ : " << size << endl;

    // 清空所有数据
    intVec.clear();

    intVec.reserve(10);

    for (int i = 0; i < 5; ++i)
    {
        // 在 intVec 的最后添加一个数据
        intVec.push_back(i);
    }

    // 最大能存储数据个数
    size = intVec.max_size();
    std::cout << "max_size : " << size << endl;

    system("pause");

    return 0;
}

运行结果如下
这里写图片描述

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!