STL—— 容器(vector)元素的删除
1. clear() 将整个 vector 都删除
使用 vectorname.clear() 可以将整个vector 中的元素全部删除,但是内存不会释放,如下代码:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
    vector<int>num(5, 111);
    cout << "=== 使用 clear() 删除前===" << endl;
    cout << "num 的元素个数:" << num.size() << endl;
    cout << "num 容器的大小:" << num.capacity() << endl << endl;
    cout << "=== 使用 clear() 删除后===" << endl;
    num.clear();
    cout << "num 的元素个数:" << num.size() << endl;
    cout << "num 容器的大小:" << num.capacity() << endl;
    return 0;
}打印结果:

2. 使用 erase() 删除 单个&多个 元素
使用 vectorname.clear() 可以删除容器中的单个&多个元素,他返回的是一个迭代器,是删除之后的后一个元素的地址。
删除单个元素:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
    int test[] = { 111,222,333,444,555,666 };
    vector<int>num(test, test + 6);
    cout << "num 的元素个数:" << num.size() << endl;
    cout << "num 容器的大小:" << num.capacity() << endl;
    cout << "=== 从头到尾遍历容器 ===" << endl;
    for (int i = 0; i < num.size(); i++)
    {
        cout << num[i] << endl;
    }
    vector<int>::iterator it = num.erase(num.begin() + 3);         //删除首地址后的第三个元素,并将后一个元素的地址返回
    cout << "num 的元素个数:" << num.size() << endl;
    cout << "num 容器的大小:" << num.capacity() << endl;
    cout << endl << "=== 使用一个迭代器类型的 it 遍历容器 ===" << endl;
    for (int i = 0; i < num.size() - 3; i++)
    {
        cout << *it++ << endl;
    }
    return 0;
}打印结果:
 
删除多个元素:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
    int test[] = { 111,222,333,444,555,666 };
    vector<int>num(test, test + 6);
    cout << "num 的元素个数:" << num.size() << endl;
    cout << "num 容器的大小:" << num.capacity() << endl;
    cout << "=== 从头到尾遍历容器 ===" << endl;
    for (int i = 0; i < num.size(); i++)
    {
        cout << num[i] << endl;
    }
    vector<int>::iterator it = num.erase(num.begin(), num.begin() + 3);         //删除1-3的元素,并将后一个元素的地址返回
    cout << "num 的元素个数:" << num.size() << endl;
    cout << "num 容器的大小:" << num.capacity() << endl;
    cout << endl << "=== 使用一个迭代器类型的 it 遍历容器 ===" << endl;
    
    for (int i = 0; i < num.size(); i++)
    {
        cout << *it++ << endl;
    }
    return 0;
}打印结果:

==========================================================================================================================
相关推荐
  willluckysmile    2019-06-29  
   风和日丽    2019-06-20  
   gaojunonly    2011-07-13  
   JayFighting    2020-06-28  
   Chenliaoyuan    2020-06-11  
   星辰大海的路上    2020-06-10  
   myveer    2020-06-01  
   willluckysmile    2020-05-03  
   shayuchaor    2020-04-20  
   fengyun    2020-04-17  
   htofly    2020-03-27  
   MrFuWen    2020-02-22  
   yuanye0    2019-12-09  
   laohyx    2019-11-03  
   shenxiuwen    2019-10-31  
   lixinghui0    2011-05-02  
   nimeijian    2019-10-21