首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

container.erase(first,last)其中first == last在STL容器中

这个问答内容涉及到了C++标准库中的容器(container)的erase()函数。erase()函数用于从容器中删除元素,而container.erase(first, last)则表示删除一个范围内的元素,其中first是要删除元素的起始位置,last是要删除元素的结束位置。

当first == last时,表示要删除的元素只有一个,即只删除first所指向的元素。

在STL容器中,常见的有vector、list、deque等,它们都支持erase()函数。使用erase()函数时,需要注意容器的迭代器会失效,如果需要继续使用迭代器,需要重新定位。

以下是一个简单的示例代码,演示了如何使用erase()函数删除vector中的元素:

代码语言:c++
复制
#include<iostream>
#include<vector>

using namespace std;

int main()
{
    vector<int> v = {1, 2, 3, 4, 5};
    vector<int>::iterator it = v.begin() + 1;  // 指向2
    v.erase(it);
    for (int i : v) {
        cout << i << " ";
    }
    cout<< endl;  // 输出:1 3 4 5
    return 0;
}

在这个示例中,我们定义了一个vector,并使用erase()函数删除了其中的一个元素。可以看到,删除后vector中的元素已经被正确删除,而且迭代器也已经失效,需要重新定位。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 图解|从武侠角度探究STL排序算法的奥秘

    优缺点也大致清楚了,所以可以猜想一下内省式排序实际是如何调度使这三种排序算法的: 启动阶段 面对大量的待排序元素,首先使用快速排序进行大刀阔斧排序,复杂度可以O(nlogn)运行 深入阶段 快速排序使用递归过程...sort函数的应用场景 SGI STL的sort的参数是两个随机存取迭代器RandomAccessIterator,sort的模板也是基于此种迭代器的,因此如果容器不是随机存取迭代器,那么可能无法使用通用的...别急往下看,last=cut峰回路转cut变成了左子序列的右边界,这样就开始了左子序列的处理; 快速排序的实现对比 前面提到了sort快速排序的写法和我们之前见到的有一些区别,看了一下《STL源码剖析...的写法: stl_quicksort(first,last){ //循环作为外层控制结构 while(ok){ cut = stl_partition(first...= last; ++i) __linear_insert(first, i, value_type(first)); } 插入函数同样出现了__unguarded_xxx这种形式的函数

    43630

    C++之STL标准模板库——从入门到精通

    具体说:STL包含了容器、适配器、算法、迭代器、仿函数以及空间配置器。 STL设计理念:追求代码高复用性以及运行速度的高效率,实现时使用了许多技术。...STL的六大组件 容器 STL容器,可以划分为两大类:序列式容器和关联式容器。 ? 算法 算法:问题的求解步骤,以有限的步骤,解决数学或逻辑的问题。...3. find、find_if 该算法的作用是找元素区间中第一次出现的位置 // [first, last)查找value第一次出现的位置,找到返回该元素的位置,否则返回last // 时间复杂度O(...C++迭代器本质:是一个指针,让该指针按照具体的结构去操作容器的数据。 为什么需要迭代器 通过前面算法的学习了解到:STL算法分为容器相关联与通用算法。...STL适配器总共有三种类型: 容器适配器-stack和queue stack的特性是后进先出,queue的特性为先进先出,该种特性deque的接口完全满足,因此stack和queue底层将deque

    96820

    对vector等STL标准容器进行排序操作

    STL还提供了其他仿函数,以下是仿函数列表: 名称 功能描述 equal_to 相等 not_equal_to 不相等 less 小于 greater 大于 less_equal 小于等于 greater_equal...其中的区别是,带有stable的函数可保证相等元素的原本相对次序排序后保持不变。或许你会问,既然相等,你还管他相对位置呢,也分不清楚谁是谁了?...StrictWeakOrdering comp); 第1,3种形式,sort 和 stable_sort都没有指定比较函数,系统会默认使用operator< 对区间[first,last)内的所有元素进行排序...因此在这些容器,元素一直是有序的。 这些容器的迭代器类型并不是随机型迭代器,因此,上述的那些排序函数,对于这些容器是不可用的。...本文以实例的方式,解释了STL中排序算法的特性,并总结了实际情况下应如何选择合适的算法。

    2.5K20

    ACM竞赛常用STL(一)

    --vector STL 的头文件定义了vector(向量容器模板类),vector容器以连续数组的方式存储元素序列,可以将vector 看作是以顺序结构实现的线性表。...vector s(first, last);定义一个vector 对象,并从由迭代器firstlast 定义的序列[first,last)复制初值。...s.insert(it, first, last)将由迭代器firstlast 所指定的序列[first, last)插入到迭代器it 指向的元素前面。...s.assign(first, last)将序列替换成由迭代器firstlast 所指定的序列[first, last)。[first, last)不能是原序列的一部分。...简单地说,STL 中有以下几类iterator(迭代器): 输入iterator(迭代器),容器的连续区间内向前移动,可以读取容器内任意值;输出iterator(迭代器),把值写进它所指向的容器;前向

    79220

    【C++】STL 算法 - 排序算法 ( 合并排序算法 - merge 函数 | 随机排序算法 - random_shuffle 函数 | 反转序列算法 - reverse 函数 )

    一、合并排序算法 - merge 函数 1、函数原型分析 C++ 语言 的 标准模板库 ( STL , STL Standard Template Library ) , 提供了 merge 合并排序算法函数...: InputIterator1 first1 参数 : 有序 输入 容器 1 的 迭代器范围 的 起始迭代器 ( 包含该迭代器指向的元素 ) ; InputIterator1 last1 参数 :...二、随机排序算法 - random_shuffle 函数 1、函数原型分析 C++ 语言 的 标准模板库 ( STL , STL Standard Template Library ) , 提供了...三、反转序列算法 - reverse 函数 1、函数原型分析 C++ 语言 的 标准模板库 ( STL , STL Standard Template Library ) , 提供了 reverse...反转序列算法函数 用于 对容器的元素进行 反转序列 ; reverse 反转序列 函数 的 作用是 是 将序列 [first, last) 的元素顺序颠倒 , 使得原来序列的第一个元素成为最后一个

    16310

    9.1 C++ STL 排序、算数与集合

    实际编程,根据具体问题的需求选择合适的算法,能够更好地发挥STL的优势,提高程序的效率。 9.1 堆排序算法 Sort_heap 算法函数,用于对堆容器进行排序。...last); 其中firstlast是随机访问迭代器,表示待排序的堆容器的范围。...sort_heap函数将[first, last]范围的堆容器排序,并将排序后的结果存储相同的容器。...sort函数将[first, last]范围内的元素按照递增顺序排序,并将排序后的结果存储相同的容器。sort函数执行前,需要保证所排序的元素类型支持<运算符。...stable_sort函数将[first, last]范围内的元素按照递增顺序排序,并保证相等元素的相对顺序不变,将排序后的结果存储相同的容器

    17820

    9.1 C++ STL 排序、算数与集合

    实际编程,根据具体问题的需求选择合适的算法,能够更好地发挥STL的优势,提高程序的效率。9.1 堆排序算法Sort_heap 算法函数,用于对堆容器进行排序。...last);其中firstlast是随机访问迭代器,表示待排序的堆容器的范围。...sort_heap函数将[first, last]范围的堆容器排序,并将排序后的结果存储相同的容器。...sort函数将[first, last]范围内的元素按照递增顺序排序,并将排序后的结果存储相同的容器。sort函数执行前,需要保证所排序的元素类型支持<运算符。...stable_sort函数将[first, last]范围内的元素按照递增顺序排序,并保证相等元素的相对顺序不变,将排序后的结果存储相同的容器

    21330

    深入理解快速排序和STL的sort算法

    SGI STL的sort的参数是两个随机存取迭代器RandomAccessIterator,sort的模板也是基于此种迭代器的,因此如果容器不是随机存取迭代器,那么可能无法使用通用的sort函数。...其中注意到__introsort_loop的第三个参数__lg(last - first)*2,凭借我们的经验来猜(蒙)一下吧,应该递归深度的限制,不急看下代码实现: ?...别急往下看,last=cut峰回路转cut变成了左子序列的右边界,这样就开始了左子序列的处理; 快速排序的实现对比 前面提到了sort快速排序的写法和我们之前见到的有一些区别,看了一下《STL源码剖析...引入参数随机存取迭代器firstlast 如果last-first > __stl_threshold不成立就调用__insertion_sort,这个相当于元素数比较少了可以直接调用,不用做特殊处理...= last; ++i) __linear_insert(first, i, value_type(first)); } 插入函数同样出现了__unguarded_xxx这种形式的函数

    1.3K30

    【C++】STL 算法 - 拷贝替换算法 ( 元素复制算法 - copy 函数 | 元素替换算法 - replace 函数 | 替换符合要求的元素算法 - replace_if 函数 )

    一、元素复制算法 - copy 函数 1、函数原型分析 C++ 语言 的 标准模板库 ( STL , STL Standard Template Library ) , 提供了 copy 元素复制算法函数..., InputIterator last, OutputIterator result); 参数解析 : InputIterator first 参数 : 输入容器 ( 被复制容器 ) 的 迭代器范围...二、元素替换算法 - replace 函数 1、函数原型分析 C++ 语言 的 标准模板库 ( STL , STL Standard Template Library ) , 提供了 replace..., ForwardIterator last, const T& old_value, const T& new_value); 参数解析 : ForwardIterator first 参数 : 输入容器...三、替换符合要求的元素算法 - replace_if 函数 1、函数原型分析 C++ 语言 的 标准模板库 ( STL , STL Standard Template Library ) , 提供了

    16510

    C++中使用sort对常见容器排序

    本文主要解决以下问题 STLsort的使用方法 使用sort对vector的排序 使用sort对map排序 使用sort对list排序 STLsort的使用方法 C++ STL 标准库的 sort...值得一提的是,sort() 函数位于头文件,因此使用该函数前,程序应包含如下语句: #include sort() 函数有 2 种用法,其语法格式分别为: //对 [first...排序规则,对 [first, last) 区域内的元素进行排序 void sort (RandomAccessIterator first, RandomAccessIterator last, Compare...comp); 其中firstlast 都为随机访问迭代器,它们的组合 [first, last) 用来指定要排序的目标区域;另外在第 2 种格式,comp 可以是 C++ STL 标准库提供的排序规则...C++ 几乎操作vector时,几乎可以视作是操作数组,可以将vector看作对数组的封装。

    2.6K40

    【C++】STL 算法 ⑨ ( 预定义函数对象示例 - 将容器元素从大到小排序 | sort 排序算法 | greater<T> 预定义函数对象 )

    - 将容器元素从大到小排序 1、sort 排序算法 C++ 标准模板库 ( STL , Standard Template Library ) 提供 了 sort 算法 函数 , 该函数定义 头文件 , 是一个泛型算法 ; sort 算法 用于 对容器的元素排序 , 该算法效率很高 , 可以 对给定 迭代器范围 内的元素进行排序 , 并且可以 根据用户指定的 比较函数..., RandomIt last ); RandomIt first, RandomIt last 参数 : 该函数接受两个 随机访问迭代器 firstlast , 它们定义了需要排序的序列范围..., RandomIt last, Compare comp ); RandomIt first, RandomIt last 参数 : 该函数接受两个 随机访问迭代器 firstlast , 它们定义了需要排序的序列范围...; 该 函数对象 主要用于STL算法 控制排序顺序 , 搜索条件 等场景 ; greater 函数对象 头文件定义 , 它接受一个 泛型类型参数 T , 该参数指定了要比较的元素类型

    16210

    开发成长之路(6)-- C++从入门到开发(C++知名库:STL入门·容器(一))

    为了建立数据结构与算法的一套标准,降低其间的耦合关系,以及提升各自的交互性、弹性、独立性,C++社群诞生了STL. STL是一个开源项目,所以有很多个版本。...其实STL提供了六大组件,容器和算法只是其中一部分,它们分别是: 容器、算法、迭代器、仿函数、配接器、配置器。 这些组件都是什么? 不要急,就算知道也再看一遍吧。...---- 来看一下STL六大组件联合工作的图示: ---- STL的序列式容器容器 源码之前,了无秘密 曾经面试官问过我这么一个问题:请你描述一下,STL的所有容器,它们的底层实现机制、它们增删查改的时间复杂度是多少...,last)中所有元素: 先看图: iterator erase(iterase first,iterase last){ iterator i = copy(last,finish,first...) //copy后面的篇章会有,先克服一下困难 destroy(i,finish); finish = finish - (last - first); return first; } erase

    32910

    【C++】STL 算法 - 累加填充算法 ( 元素累加算法 - accumulate 函数 | 元素填充算法 - fill 函数 )

    一、元素累加算法 - accumulate 函数 1、函数原型分析 C++ 语言 的 标准模板库 ( STL , STL Standard Template Library ) , 提供了 accumulate...元素累加算法函数 用于 将 一个容器的元素 进行累加操作 ; accumulate 元素累加函数 将 输入容器 的 [ 起始迭代器, 终止迭代器 ) 范围 内的 元素 一个基础值 的 基础上..., InputIterator last, T init); 参数解析 : InputIterator first 参数 : 输入容器 ( 被复制容器 ) 的 迭代器范围 的 起始迭代器 ( 包含该迭代器指向的元素...二、元素填充算法 - fill 函数 1、函数原型分析 C++ 语言 的 标准模板库 ( STL , STL Standard Template Library ) , 提供了 fill 元素填充算法函数...如下 : template void fill(ForwardIterator first, ForwardIterator last

    26410
    领券