vector容器常用操作

1、vector构造函数
vector<t> v;//采用模板类实现,默认构造函数
vector(v.begin(),v.end());//将[begin(),end()]区间的元素拷贝给本身
vector(n,elem);//将n个elem拷贝给本身
vector(const vector &vec);//拷贝构造函数</t>

2、vector常用的赋值操作
assign(beg,end);//将【beg,end)区间的数据拷贝赋值给本身;
assign(n,elem);//将n个elem拷贝给本身
swap(vec);//将vec与本身元素互换

3.vector大小操作
size();
empty();
resize(int num);
resize(int num,elem);
capacity();//容器的容量
reserve(int len);//容量预留len个元素长度,预留位置不初始化,元素不可访问;

4、vector存取操作
at(int idx);
operator[];
front();//返回容器第一个元素
back();//返回容器最后一个元素

5、vector插入和删除
insert(const_iterator pos,int count,ele);//迭代器指向位置插入count个元素ele
push_back(ele);//尾部插入元素ele
pop_back();//删除最后一个元素
erase(const_iterator start,const_iterator end);//删除从start到end之间的元素
erase(const_iterator pos);//删除迭代器指向的元素
clear();//删除所有元素

代码如下:

#include<iostream>
#include<vector>
using namespace std;

//vector初始化
void test01()
{
    vector<int> v;//默认构造,空的vector容器
    vector<int> v2(10, 5);//带参数构造函数
    vector<int> v3(v2.begin(), v2.end());
    vector<int> v4(v3);//拷贝构造

}

//vector容器的大小操作
void test02()
{
    int arr[]{6, 8, 3, 9    };
    vector<int> v(arr, arr + sizeof(arr) / sizeof(int));
    cout << "容量" << v.capacity() << endl;
    cout << "大小" << v.size() << endl;

    if (v.empty())
    {
        cout<< "容器为空" << endl;

    }

}
//vector存取操作
void test03()
{
    int arr[]{6, 8, 3, 9    };
    vector<int> v(arr, arr + sizeof(arr) / sizeof(int));

    try
    {
        cout << v[100] << endl;
        cout << v.at[100] << endl;
    }
    catch (...){
        cout << "数组访问越界" << endl;
    }
    cout << v.front << endl;
    cout << v.back << endl;
}
void print(vector<int>& v)
{
    for (vector<int>::iterator it = v.begin; it != v.end; it++)
    {
        cout << *it << " ";
    }
}
//vector容器的插入和删除
void test04()
{
    int arr[]{6, 8, 3, 9    };
    vector<int> v(arr, arr + sizeof(arr) / sizeof(int));
    v.insert(v.begin(), 100);//头部插入100
    v.push_back(100);//尾插法

    vector<int>::iterator pStart = v.begin();
    vector<int>::iterator pEnd = v.end();

    while (pStart!=pEnd)
    {
        cout << *pStart << " ";
        pStart++;
    }
    cout << endl;


    //删除
    int val = v.back();
    cout << val << "被删除"<<endl;
    v.pop_back;
    for (vector<int>::iterator it = v.begin(); it != v.end(); it++)
    {
        cout << *it << " ";
    }
    cout << endl;
    //指定位置删除
    v.erase(v.begin());
    for (vector<int>::iterator it = v.begin(); it != v.end(); it++)
    {
        cout << *it << " ";
    }
    //区间删除
    v.erase(v.begin(), v.end);
    //v.clear();全部删除
    cout << "size" << v.size() << endl;
}

int main()
{
    vector<int> v1;//默认构造,空的vextor容器
    vector<int> v2;
    for (int i = 0; i < 5; i++)
    {
        v1.push_back(i);

    }
    for (int i = 6; i < 10; i++)
    {
        v2.push_back(i);

    }
    print(v1);
    print(v2);
    //v1和v2交换
    v1.swap(v2);

    //swap小技巧
    vector<int> v;
    v.push_back(2);
    v.push_back(3);
    v.resize(100);

    cout << "容量" << v.capacity() << endl;
    cout << "大小" << v.size() << endl;
    v.clear;//容量不变,大小清零    
    v.push_back(2);
    v.push_back(3);

    cout << "容量" << v.capacity() << endl;
    cout << "大小" << v.size() << endl;

    vector<int>(v).swap(v);//v的空间跑到对象中,使用完释放掉空间
    cout << "容量" << v.capacity() << endl;
    cout << "大小" << v.size() << endl;
    return EXIT_SUCCESS;
}

图片说明
图片说明

全部评论

相关推荐

12-14 22:54
武汉大学 Java
点赞 评论 收藏
分享
11-03 13:18
门头沟学院 Java
包行:平时怎么刷算法题的哇,字节的手撕听说都很难
字节跳动工作体验
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务