c++ vector remove

一、基本概念

vector是STL中的一个容器,可实现动态数组的功能。它是一段连续的内存空间,可以存储变量,变量的存储大小是固定的,也就是所谓的容器大小。当需要往该容器中插入数据时,如果所需空间超出了容器当前的大小,会重新分配一块更大的连续内存空间,然后将旧内存空间的内容复制到新内存空间中,并释放旧内存空间。

vector的remove函数用于删除vector中指定元素,它实际上并不会直接删除该元素,而是将该元素和后面所有元素依次往前移动,并修改vector的大小。因此,该操作的时间复杂度为O(n)。

二、函数参数与返回值

vector的remove函数的参数为待删除元素的迭代器,返回值为指向容器结尾的迭代器。

    iterator remove(iterator position);
    iterator remove(iterator first, iterator last);

第一种情况,删除迭代器position所指向的元素,返回值指向容器结尾的迭代器。第二种情况,删除[first, last)范围内的所有元素,返回值同样指向容器结尾的迭代器。

三、使用示例

下面是一个使用remove函数删除vector中特定元素的例子。

#include <iostream>
#include <vector>

using namespace std;

int main()
{
    vector<int> v = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

    // 删除4
    vector<int>::iterator it = find(v.begin(), v.end(), 4);
    v.erase(it);

    // 删除5、6、7
    it = find(v.begin(), v.end(), 5);
    v.erase(it, it+3);

    for(auto i = v.begin(); i != v.end(); i++)
        cout << *i << " ";
    cout << endl;

    return 0;
}

在上面的代码中,首先定义了一个含有10个元素的vector,然后通过find函数找到要删除的元素的位置,再调用erase函数删除该元素。与此同时,也演示了如何删除一个范围内的元素,即删除[5, 7)之间的元素。

四、注意点

1. vector删除元素后,迭代器会失效,因此要保证在erase操作之后,其后的迭代器都要重新获得一下。

2. 如果只是想简单地从vector中删除元素,建议直接使用erase函数,因为remove函数需要使用迭代器,稍显麻烦。

3. 删除元素后建议使用shrink_to_fit函数缩小vector的容量,以节省内存。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/197181.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-03 13:28
下一篇 2024-12-03 13:28

相关推荐

  • Java的vector用法详解

    一、vector的用法 java中的vector是可变长度的动态数组,类似于c++中的vector。可以存储任何数据类型,但需要保证类型一致。下面是一个vector的使用示例: i…

    编程 2025-04-25
  • c++ vector头文件详解

    一、vector介绍 vector是c++ STL(Standard Template Library)中的一个容器,它能够动态地增加或减少容器的大小,并且支持快速的随机访问。ve…

    编程 2025-04-24
  • jQuery remove() 方法的详细介绍

    一、选取 jQuery中的remove()方法是用于删除指定元素及其子元素的方法。它的基本语法如下: $(selector).remove(); 其中的selector可以是指定要…

    编程 2025-04-23
  • vector初始化赋值详解

    一、基础概念 vector是一个封装了动态大小数组的顺序容器(Sequence Container)。与C-style数组不同,它能够根据需要自动扩展,它是连续存储的,与数组一样高…

    编程 2025-04-22
  • Java Map Remove详解

    一、Map.remove() Map.remove(Object key)方法用于根据key删除Map中的entry。如果Map中不存在这个key,则不进行任何操作。remove(…

    编程 2025-04-18
  • 深入探析vector添加元素

    一、初始化vector 1、动态初始化vector 使用vector时,我们需要先将其初始化,vector可以有多种初始化方式。其中动态初始化是指我们需要在程序运行时才能确定vec…

    编程 2025-04-12
  • 详解vector的reserve函数

    一、概述 在C++的STL中,vector是一种很常用的容器,它可以存放任意类型的数据,并且可以动态增加或减少元素个数。其中,reserve函数是vector的一个重要函数,它可以…

    编程 2025-04-12
  • C++ Vector初始化

    一、定义和构造函数 C++中的vector是一个类模板,它是一种动态数组,支持在数组的尾部增加或删除元素。在使用vector进行初始化时,有两种常见的方法。 第一种是使用定义和构造…

    编程 2025-04-12
  • 深入剖析vector的长度

    一、长度的定义 Vector是C++标准库中一个非常重要的容器,它可以动态地增加或减少存储在其中的元素,而且还能够在O(1)的时间复杂度下实现常数时间的随机访问。Vector中有一…

    编程 2025-02-25
  • vector二维数组的详解

    vector是C++ STL库中非常常用的容器之一,它的特点是动态分配内存,可以根据实际情况自动扩容。而二维数组则是一个由多个一维数组组成的数组,可以看成是一个表格,具有行列的性质…

    编程 2025-02-24

发表回复

登录后才能评论