vector容器

发布于:2024-06-30 ⋅ 阅读:(44) ⋅ 点赞:(0)

以下是关于vector容器的总结
1、构造容器
2、容器赋值
3、获取容量capacity和大小size
4、插入和删除
5、数据存取
6、互换容器和预留空间

#include <iostream>
#include <vector>

using namespace std;
// vector数据结构和数组非常相似,也称为单端数组
// vector和普通数组的区别:数组是静态空间,vector可以动态扩展
// vector容器的迭代器是支持 随机访问 的迭代器

void printVector(vector<int> &v)
{
    for(vector<int>::iterator it = v.begin(); it!=v.end(); it++)
    {
        cout << *it << " ";
    }
    cout << endl;
}

// vector的几种构造方式
void test01()
{
    // 默认构造
    vector<int> v1; 
    for(int i=0; i<10; i++)
    {
        v1.push_back(i);
    }
    printVector(v1);

    // 通过区间方式进行构造
    vector<int> v2(v1.begin(), v1.end());
    printVector(v2);

    // 拷贝构造
    vector<int> v3(v2);
    printVector(v3);
}

// vector的赋值
void test02()
{
    // 1 等号赋值
    vector<int> v1,v2; 
    for(int i=0; i<10; i++)
    {
        v1.push_back(i);
    }
    v2 = v1;
    printVector(v2);
}


// vector容量和大小
void test03()
{
    vector<int> v1;
    bool flag = v1.empty();
    cout << "flag = " << flag << endl;
    for(int i=0; i<5; i++)
    {
        v1.push_back(i);
    }
    flag = v1.empty();
    cout << "flag = " << flag << endl;

    int capacity = v1.capacity();
    cout << "capacity = " << capacity << endl;

    int size = v1.size();
    cout << "size = " << size << endl;

    // resize(size, num) 重新定义容器的大小,多余的位置用num来填充

}

// vector插入和删除
void test04()
{
    // 1 push_back(ele) & pop_back(ele)
    vector<int> v;
    for(int i = 0; i<10; i++)
    {
        v.push_back(i);
    }
    // 2 insert(const_iterator pos, ele) 迭代器指向位置Pos插入元素ele
    v.insert(v.begin()+2, 10);
    printVector(v);

    // 3.1 erase(const_iterator pos) 删除迭代器指向位置的元素
    v.erase(v.begin()+2);
    printVector(v);

    // 3.2 erase(const_iterator start, const_iterator end) 删除迭代器从strat到end之间的元素
    v.erase(v.begin()+3, v.begin()+6);
    printVector(v);

    // 4 clear()
    v.clear();
    printVector(v);

}

// vector数据存取
void test05()
{
    vector<int> v;
    for(int i = 0; i<10; i++)
    {
        v.push_back(i);
    }
    // 1 v.at(int idx)
    cout << "v[2] = " << v.at(2) << endl;;

    // 2 operator[] -> v[2]
    cout << "v[2] = " << v[2] << endl;

    // 3 front() 返回容器中的第一个数据
    cout << "v[0] = " << v.front() << endl;

    // 4 back() 返回容器中的最后一个数据
    cout << "v[9] = " << v.back() << endl;
}

// vector互换容器 and 预留空间
void test06()
{
    // 实现两个容器内元素进行交换
    // 函数原型:swap(vec);
    vector<int> v1,v2;
    for(int i = 0; i<10; i++)
    {
        v1.push_back(i);
        
    }
    for(int i=0; i<5; i++)
    {
        v2.push_back(i+2);
    }
    v1.swap(v2);
    printVector(v1);
    printVector(v2);

    // reserve(int len); 
    // 容器预留len个元素长度,预留位置不初始化,元素不可访问
    // 减少动态扩展内存的次数
}

int main(int argc, char **argv)
{
    // 1 构造
    cout << "1 构造" << endl;
    test01();
    cout << endl;

    // 2 赋值
    cout << "2 赋值" << endl;
    test02();
    cout << endl;

    // 3 容量和大小
    cout << "3 容量和大小" << endl;
    test03();
    cout << endl;

    // 4 插入和删除
    cout << "4 插入和删除" << endl;
    test04();
    cout << endl;

    // 5 数据存取
    cout << "5 数据存取" << endl;
    test05();
    cout << endl;

    // 6 互换容器
    cout << "6 互换容器" << endl;
    test06();
    cout << endl;
    return 0;
}

在这里插入图片描述


网站公告

今日签到

点亮在社区的每一天
去签到