c++ 对vector数组的一些操作

1,083 阅读2分钟

这是我参与更文挑战的第7天,活动详情查看: 更文挑战

1. vector插入与删除

(1)push_back(elem)

尾部插入elem。

(2)pop_back()

尾部删除最后一个元素。

(3)insert(const_iterator pos,elem)

向pos位置添加一个elem,注意pos必须是迭代器类型。

(4)insert(const_iterator pos,int count,elem)

向pos位置添加count个elem。

(5)erase(const_iterator pos)

删除迭代器指向的元素。

(6)erase(const_iterator start,const_iterator end)

删除从start到end之间的元素。

(7)clear()

删除容器中所有元素。

上述七种方法示例:

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

void printVector(vector<int>&v)
{
    for(vector<int>::iterator it = v.begin();it != v.end();it++)
    {
        cout<< *it <<" ";
    }
    cout<<endl;
}
//vector容器赋值
void test()
{
    vector<int>v1;//默认构造函数,无参数
    for (int i = 0; i<10; i++)
    {
        //在尾部添加元素
        v1.push_back(i);
    }
    printVector(v1);
    //在尾部删除最后一个元素
    v1.pop_back();
    printVector(v1);
    
    //在第二个元素位置添加100
    v1.insert(v1.begin()+1,100);//insert()第一个参数必须是迭代器类型
    printVector(v1);

    //在最后一个元素位置添加5个0
    v1.insert(v1.end(),5,0);
    printVector(v1);

    //删除第5个元素
    v1.erase(v1.begin()+4);
    printVector(v1);

    //删除从第3个到最后的元素
    v1.erase(v1.begin()+2,v1.end());
    printVector(v1);

    //删除容器内所有元素
    v1.clear();
    printVector(v1);
}

int main(){
    test();
}

输出结果:

0 1 2 3 4 5 6 7 8 9 
0 1 2 3 4 5 6 7 8 
0 100 1 2 3 4 5 6 7 8 
0 100 1 2 3 4 5 6 7 8 0 0 0 0 0 
0 100 1 2 4 5 6 7 8 0 0 0 0 0 
0 100 

2. vector容量和大小

(1) empty()

判断容器是否为空。

(2)capacity()

返回容器的容量。当加入元素超过容器容量时,容器容量会翻倍。

(3)size()

返回容器中元素个数。

(4)resize(int n)

重新指定容器的长度,若容器变长,则用默认值填充变长的部分。若容器变短,则超出容器长度的部分会被删除。

(5)resize(int n,elem)

与resize(int n)的区别在于,若容器变长,则用elem填充变长的部分。

上述5种方法的示例:

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

void printVector(vector<int>&v)
{
    for(vector<int>::iterator it = v.begin();it != v.end();it++)
    {
        cout<< *it <<" ";
    }
    cout<<endl;
}
//vector容器赋值
void test()
{
    vector<int>v1;//默认构造函数,无参数
    for (int i = 0; i<10; i++)
    {
        v1.push_back(i);
    }
    printVector(v1);

    //1. 判断容器是否为空
    if(v1.empty()==0){
        cout<<"不为空"<<endl;
    }
    else{
        cout<<"为空"<<endl;
    }

    //2. 返回容器容量
    cout<<v1.capacity()<<endl;

    //3. 返回容器中元素个数
    cout<<v1.size()<<endl;

    //4. 重新指定容器长度为20
    v1.resize(20);
    printVector(v1);
    cout<<v1.capacity()<<endl;//容量翻倍

    //5. 重新指定容器长度为5
    v1.resize(5);
    printVector(v1);
    cout<<v1.capacity()<<endl;//即便后面容器长度缩短,容量没有任何变化

    //6. 重新指定容器长度为10,用55填充
    v1.resize(10,55);
    printVector(v1);
}

int main(){
    test();
}

输出结果:

0 1 2 3 4 5 6 7 8 9 
不为空
16
10
0 1 2 3 4 5 6 7 8 9 0 0 0 0 0 0 0 0 0 0 
32
0 1 2 3 4 
32
0 1 2 3 4 55 55 55 55 55

3. vector数据存取

除了用迭代器的方式得到数据,还可以通过以下方式获取数据。

(1)v1 [i]

返回索引i的元素。

(2)at(i)

返回索引i的元素。

(3)front()

返回容器中第一个数据元素。

(4)back()

返回容器中最后一个数据元素。