C++ vector容器-44-vector插入和删除以及存取

本篇继续学习vector容器,前面学习了vector是一个单端数组。也就是说vector的插入和删除,基本上都是在数组的末端进行。本篇要学习的vector插入和删除的方法就能体现这个特点,最后学习vector的存取操作

 

1.vector的插入和删除

在vector和插入、删除相关的方法主要有下面几个

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

先来看看前面两个,尾插法和尾删法的测试代码

#include 
#include 
#include 
using namespace std;

void printVector(vector &v)
{
    // for循环迭代器遍历容器内元素
    for(vector::iterator it = v.begin(); it != v.end(); it++)
    {
        cout << *it << " ";   
    }
    cout << endl;

}

void test01()
{
    // vector的插入和删除
    vector vec;
    // 1 尾部插入元素
    vec.push_back(2);
    vec.push_back(4);
    vec.push_back(6);
    vec.push_back(8);
    vec.push_back(10);
    printVector(vec);

    // 2 尾部删除最后一个元素
    vec.pop_back();
    printVector(vec);
    vec.pop_back();
    printVector(vec);
    
}

int main()
{
    test01();
    system("pause");
    return 0;
}

运行结果

C++ vector容器-44-vector插入和删除以及存取_第1张图片

再来看看使用迭代器进行指定位置插入元素的两个insert方法基本使用

#include 
#include 
#include 
using namespace std;

void printVector(vector &v)
{
    // for循环迭代器遍历容器内元素
    for(vector::iterator it = v.begin(); it != v.end(); it++)
    {
        cout << *it << " ";   
    }
    cout << endl;

}

void test01()
{
    // vector的插入和删除
    vector vec;
    // 1 尾部插入元素
    vec.push_back(2);
    vec.push_back(4);
    vec.push_back(6);
    vec.push_back(8);
    vec.push_back(10);
    printVector(vec);

    // 3 迭代器指向位置pos 插入元素
    vec.insert(vec.begin()+1, 233);
    printVector(vec);

    // 3 迭代器指向位置pos 插入n个ele元素
    vec.insert(vec.begin(), 3, 100);
    printVector(vec);
    
}

int main()
{
    test01();
    system("pause");
    return 0;
}

测试结果:

C++ vector容器-44-vector插入和删除以及存取_第2张图片

最后来看看删除的几个方法

#include 
#include 
#include 
using namespace std;

void printVector(vector &v)
{
    // for循环迭代器遍历容器内元素
    for(vector::iterator it = v.begin(); it != v.end(); it++)
    {
        cout << *it << " ";   
    }
    cout << endl;

}

void test01()
{
    // vector的插入和删除
    vector vec;
    // 1 尾部插入元素
    vec.push_back(2);
    vec.push_back(4);
    vec.push_back(6);
    vec.push_back(8);
    vec.push_back(10);
    printVector(vec); 

    // 5 迭代器指向位置元素删除
    vec.erase(vec.begin() + 2); // 8进行删除
    printVector(vec);

    // 6 迭代器指定区间进行删除
    vec.erase(vec.begin(), vec.end() - 1);
    printVector(vec);
    
    // 7. 清空元素
    vec.push_back(9);
    vec.clear();
    printVector(vec);
}

int main()
{
    test01();
    system("pause");
    return 0;
}

运行结果,注意下面一个空行打印,表示容器为空,已删除全部元素

C++ vector容器-44-vector插入和删除以及存取_第3张图片

 

2.vector的存取操作

存取操作,一般是说容器中某个或某些元素进行取出来,也就是读操作,还可以通过赋值进行修改操作。

主要和存取相关的操作函数原型:

at(int id); 		// 返回索引id所指的数据
operator[];	        // 返回索引id所指的数据
front();		// 返回容器中第一个数据元素
back();		        // 返回容器中最后一个数据元素

前面两个在学习string类的时候也有这两个方法,然后这里有取第一个和最后一个元素,有时候第一个和最后一个还是很方便的,通过这样方法。

#include 
#include 
#include 
using namespace std;

void printVector(vector &v)
{
    // for循环迭代器遍历容器内元素
    for(vector::iterator it = v.begin(); it != v.end(); it++)
    {
        cout << *it << " ";   
    }
    cout << endl;

}

void test01()
{
    // vector存取操作
    vector vec;
    // 1 尾部插入元素
    vec.push_back(2);
    vec.push_back(4);
    vec.push_back(6);
    vec.push_back(8);
    vec.push_back(10);
    printVector(vec); 

    // 根据索引查找对应得数据
    cout << "索引为2的元素是:" << vec.at(2) << endl;
    cout << "索引为2的元素是:" << vec[2] << endl;

    // 获取第一个和最后一个元素
    cout << "第一个元素是:" << vec.at(0) << endl;
    cout << "最后一个的元素是:" << vec[vec.size()-1] << endl;
    cout << "第一个元素是:" << vec.front() << endl;
    cout << "最后一个的元素是:" << vec.back() << endl;
    
}

int main()
{
    test01();
    system("pause");
    return 0;
}

上面还给了通过索引来找第一个和最后一个,java一般是同样的

C++ vector容器-44-vector插入和删除以及存取_第4张图片

 

你可能感兴趣的:(C++学习笔记,c++,vector,插入和删除)