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

什么STL容器执行中间删除元素?

STL(Standard Template Library)是C++标准库中的一个重要组成部分,提供了一系列的容器(Container)用于存储和管理数据。在STL容器中,可以执行中间删除元素的容器有vector、deque和list。

  1. vector(向量)是一个动态数组,可以在尾部高效地插入和删除元素。当需要在中间位置删除元素时,vector会将删除点之后的元素向前移动,填补删除的空缺。推荐的腾讯云相关产品是CVM(云服务器),详情请参考:https://cloud.tencent.com/product/cvm
  2. deque(双端队列)也是一个动态数组,支持在两端高效地插入和删除元素。当需要在中间位置删除元素时,deque会将删除点之后的元素向前或向后移动,填补删除的空缺。推荐的腾讯云相关产品是COS(对象存储),详情请参考:https://cloud.tencent.com/product/cos
  3. list(链表)是一个双向链表,可以在任意位置高效地插入和删除元素。当需要在中间位置删除元素时,list会将删除点的前后节点连接起来,跳过删除点。推荐的腾讯云相关产品是CDB(云数据库 MySQL 版),详情请参考:https://cloud.tencent.com/product/cdb

需要注意的是,STL容器的选择应根据具体的需求和场景来决定。vector适用于需要随机访问元素、频繁在尾部插入和删除元素的场景;deque适用于需要在两端高效插入和删除元素的场景;list适用于需要频繁在任意位置插入和删除元素的场景。

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

相关·内容

【C++】STL 容器 - set 集合容器 ③ ( set 集合容器常用 api 简介 | 删除元素 | 删除指定值的元素 | 删除指定迭代器位置元素 | 删除指定迭代器范围元素 )

clear 函数 一、删除元素 1、删除指定值的元素 - erase 函数 在 C++ 语言的 STL 标准模板库 中 , set 集合容器 是一个有序的集合 , 存储的元素值都是唯一的 , 不重复的... se{ 9, 5, 7 }; // 删除元素 7 se.erase(7); // 打印 set 集合容器 printS(se); // 控制台暂停 , 按任意键继续向后执行...= se.end(); it++) { cout << *it << " "; } // 回车换行 cout << endl; } 执行结果 : 在代码中 元素 7 被删除了 , 只打印出了...; 返回值解析 : 该函数的返回值是一个迭代器 , 指向被删除元素之后的下一个元素 ; 使用示例 : 在下面的示例中 , 删除了集合容器中的第二个元素 ; // set 集合容器 // 初始化列表中的顺序会自动排序...执行该函数可删除该范围的所有元素 ; 函数原型如下 : iterator erase (iterator first, iterator last); 参数解析 : first 和 last 是要删除元素范围的迭代器

67710

【C++】STL 容器 - STL 容器的值语意 ( 容器存储任意类型元素原理 | STL 容器元素可拷贝原理 | STL 容器元素类型需要满足的要求 | 自定义可存放入 STL 容器元素类 )

一、STL 容器的 值 ( Value ) 语意 1、STL 容器存储任意类型元素原理 C++ 语言中的 STL 容器 , 可以存储任何类型的元素 , 是因为 STL 容器 使用了 C++ 模板技术进行实现...容器元素可拷贝原理 STL 容器 定义时 , 所有的 STL 容器 的相关操作 , 如 插入 / 删除 / 排序 / 修改 , 都是 基于 值 Value 语意 的 , 不是 基于 引用 Reference...指针 / 引用 指向的对象被回收 , 那么容器操作就会出现问题 ; STL 容器 中 , 存储的元素 , 必须是可拷贝的 , 也就是 元素类 必须提供 拷贝构造函数 ; 3、STL 容器元素类型需要满足的要求...STL 容器元素类型需要满足的要求 : 提供 无参 / 有参 构造函数 : 保证可以创建元素对象 , 并存放到容器中 ; 提供 拷贝构造函数 : STL 容器元素是可拷贝的 , 这是容器操作的基础...容器元素类 1、代码示例 STL 容器元素类型需要满足的要求 : 提供 无参 / 有参 构造函数 : 保证可以创建元素对象 , 并存放到容器中 ; 提供 拷贝构造函数 : STL 容器元素是可拷贝的

13810
  • 【C++】STL 容器 - multimap 容器 ( multimap 容器简介 | multimap 容器常用操作 api - 插入 删除 修改 元素 )

    ); myMap.insert(make_pair(2, "Cyan")); 2、删除元素 调用 multimap 的 clear 函数 , 可以 删除所有的元素 ; // 清空 multimap,删除所有元素...void clear(); 调用 multimap 的 erase 函数 , 可以删除指定 键值 / 指定迭代器位置 / 指定迭代器范围 的 元素 ; 删除指定 键值 元素 : 通过键删除单个元素..., 返回被删除元素的数量 , 对于 multimap,可能 删除多个具有相同键的元素中的一个 ; size_type erase(const key_type& key); 删除 指定迭代器位置 元素...: 通过迭代器删除单个元素,返回指向下一个元素的迭代器 ; iterator erase(const_iterator position); 删除 指定迭代器范围 元素 : 删除一个范围内的元素,返回指向下一个元素的迭代器...printMM(myMap); // 控制台暂停 , 按任意键继续向后执行 system("pause"); return 0; }; 执行结果 : 遍历容器 : 1 Blue

    32310

    【C++】STL 容器 - list 双向链表容器 ③ ( list 常用 api 简介 | 中间位置 插入 删除 元素 | insert 函数 | clear 函数 | erase 函数 )

    一、list 双向链表容器中间位置 插入 元素 1、在指定位置插入 1 个元素 - insert 函数 下面的 std::list#insert 函数原型的作用是 在 指定的 迭代器位置 position.... . . 3、中间位置 插入 另一个容器的指定范围内的 元素 - insert 函数 在 list 双向链表容器中间位置 插入 另一个容器的指定范围内的 元素 ; 下面的函数原型中 , 接受两个迭代器...二、list 双向链表容器中间位置 删除 元素 1、删除容器中所有元素 - clear 函数 调用 std::list 双向链表容器 的 clear 函数 , 可以删除 容器中的所有元素 , 容器变成了一个空的...lstInt.clear(); 2、删除容器中指定元素 - remove 函数 调用 std::list 双向链表容器 的 clear 函数 , 可以删除 容器中的 指定元素 , 根据 元素值 进行匹配...// 删除容器中的指定元素 lstInt.remove(3); // 打印 list 双向链表容器 printL(lstInt); // 删除容器中的所有元素 lstInt.clear(

    25310

    【C++】STL 容器 - vector 动态数组容器 ⑧ ( vector 容器添加 删除元素 | clear 函数 | insert 函数 | erase 函数 )

    文章目录 一、 vector 删除元素 1、vector 容器尾部 删除 元素 - pop_back 函数 2、删除 vector 容器所有元素 - clear 函数 3、删除 vector 容器指定...参考 【C++】STL 容器 - vector 动态数组容器 ④ ( vector 容器容量大小操作 | vector 容器容量判定 | vector 容器重新指定容器大小 | 容器尾部插入/删除元素..., 按任意键继续向后执行 system("pause"); return 0; }; 执行结果 : vector 容器中的元素 : 1 2 3 4 5 6 7 8 9 10 vector...二、 vector 插入元素 1、vector 容器尾部 插入 元素 - push_back 函数 参考 【C++】STL 容器 - vector 动态数组容器 ④ ( vector 容器容量大小操作...(vec); // 控制台暂停 , 按任意键继续向后执行 system("pause"); return 0; }; 执行结果 : vector 容器中的元素 : 1 2

    3.3K11

    【C++】STL 容器 - deque 双端数组容器 ( deque 容器与 vector 容器区别 | 容器头部插入 删除元素 | 查询元素索引位置 | algorithm#find 函数 )

    容器的不同操作 ) 1、deque 容器头部插入元素 - push_front 函数 2、deque 容器头部删除元素 - pop_front 函数 三、 查询 deque 容器中指定元素的索引位置...system("pause"); return 0; }; 执行结果 : deque 容器中的元素 : 1 2 3 4 5 deque 容器大小 : 5 deque 容器中的元素...std::deque 容器的 pop_front() 函数 可以 删除容器的头部元素 ; 该函数原型如下 : void pop_front(); 该函数会删除 deque 容器的头部元素 , 并减小容器的大小...// 控制台暂停 , 按任意键继续向后执行 system("pause"); return 0; }; 执行结果 : deque 容器中的元素 : 1 2 3 4 5...3" << endl; } // 控制台暂停 , 按任意键继续向后执行 system("pause"); return 0; }; 执行结果 : deque 容器中的元素

    29310

    【C++】STL 容器 - list 双向链表容器 ② ( list 常用 api 简介 | 首尾 添加 删除 元素 | 获取首尾元素 | 正向迭代与反向迭代 )

    文章目录 一、元素操作 1、首尾 添加 / 删除 元素 2、获取 首尾 元素 二、迭代器遍历容器 1、正向迭代与反向迭代 2、代码示例 一、元素操作 1、首尾 添加 / 删除 元素 list 双向链表容器..., 如果列表为空 , 则此操作未定义崩溃退出 ; void pop_front (); // 删除头部元素 lstInt.pop_front(); 尾部插入元素 : 在容器尾部插入一个元素 val...printL(lstInt); // 删除头部元素 lstInt.pop_front(); // 删除尾部元素 lstInt.pop_back(); // 打印 list 容器内容...printL(lstInt); // 控制台暂停 , 按任意键继续向后执行 system("pause"); return 0; }; 执行结果 : list 容器内容 : 1 2 3 4..., 按任意键继续向后执行 system("pause"); return 0; }; 执行结果 : list 容器内容 : 1 2 3 4 5 首元素 : 1 尾元素 : 5 请按任意键继续.

    30510

    C++(STL):20---deque容器访问元素

    和 array、vector 容器一样,deque可以采用普通数组访问存储元素的方式,访问 deque 容器中的元素,比如: #include #include ...5; cout << d[1] << endl; return 0; } 运行结果为: 2 5 可以看到,容器名[n]的这种方式,不仅可以访问容器中的元素,还可以对其进行修改。...endl; //下面这条语句会抛出 out_of_range 异常 //cout << d.at(10) << endl; return 0; } 运行结果为: 2 5 读者可能有这样一个疑问,即为什么...除此之外,deque 容器还提供了 2 个成员函数,即 front() 和 back(),它们分别返回 vector 容器中第一个和最后一个元素的引用,通过利用它们的返回值,可以访问(甚至修改)容器中的首尾元素...容器没有提供 data() 成员函数,同时 deque 容器在存储元素时,也无法保证其会将元素存储在连续的内存空间中,因此尝试使用指针去访问 deque 容器中指定位置处的元素,是非常危险的。

    65020

    【C++】STL 容器 - vector 动态数组容器 ④ ( vector 容器容量大小操作 | vector 容器容量判定 | vector 容器重新指定容器大小 | 容器尾部插入删除元素 )

    文章目录 一、 vector 容器容量大小操作 1、vector 容器容量判定 2、vector 容器重新指定容器大小 3、代码示例 二、 vector 容器尾部插入 / 删除元素 1、vector 容器尾部插入元素...2、vector 容器尾部删除元素 一、 vector 容器容量大小操作 1、vector 容器容量判定 vector 容器容量判定 : 获取元素个数 : size() 函数返回 vector 容器元素的数量...重新指定长度 : 参数 n 表示新的容器大小 ; 如果 n 大于当前容器的大小 , 则会在容器的末尾添加元素 , 使用元素类型的默认构造函数创建新元素 ; 如果 n 小于当前容器的大小 , 则会在容器的开头删除元素...system("pause"); return 0; }; 执行结果 : 1 2 3 Press any key to continue . . . 2、vector 容器尾部删除元素 vector...容器尾部删除元素 , 可以调用 vector 类的 pop_back 成员函数实现 , 该函数用于删除 vector 容器中的最后一个元素 , 函数原型如下 : void pop_back(); 代码示例

    82910

    【C++】STL 容器 - vector 动态数组容器 ⑤ ( vector 容器元素访问 | at 函数 | [] 运算符重载 函数 | vector 容器首尾元素访问 )

    文章目录 一、 vector 容器元素访问 1、vector 容器访问指定索引的元素 - at 函数 2、vector 容器访问指定索引的元素 - [] 运算符重载 函数 二、 vector 容器首尾元素访问...1、vector 容器首尾元素访问函数 2、代码示例 - vector 容器首尾元素访问 一、 vector 容器元素访问 1、vector 容器访问指定索引的元素 - at 函数 vector 容器访问指定索引的元素...system("pause"); return 0; }; 执行结果 : 1 2 3 Press any key to continue . . . 2、vector 容器访问指定索引的元素...system("pause"); return 0; }; 二、 vector 容器首尾元素访问 1、vector 容器首尾元素访问函数 vector 容器首尾元素访问函数 : 访问 vector..., 按任意键继续向后执行 system("pause"); return 0; }; 执行结果 : 1 2 3 首元素 : 1 尾元素 : 3 Press any key to continue

    16510

    【C++】STL 容器 - map 关联容器 ② ( map 容器常用 api 操作 | 容器插入元素操作 - map#insert 函数 | 插入 修改 元素操作 - operator[] )

    文章目录 一、map 容器插入元素操作 - map#insert 函数 1、函数原型简介 2、pair 键值对初始化方式 二、map 容器 插入 / 修改 元素操作 - map#operator[] 函数...三、代码示例 - map 容器插入 / 更新元素 1、代码示例 2、执行结果 一、map 容器插入元素操作 - map#insert 函数 1、函数原型简介 在 C++ 语言 标准模板库 ( STL..., bool> insert(const value_type& value); 参数解析 : 参数类型 : value_type 是 map 容器中存储的元素的类型 , 具体类型为 pair<const...中键值对元素的 键 类型 , T 是 键值对元素的 值 类型 ; 如果给定的 参数 key 已经存在于 map 关联容器中 , 则更新该 key 对应的 Value 值 , 并返回对应键的值的引用 ;...system("pause"); return 0; }; 2、执行结果 执行结果 : Jack: 16 Jerry: 12 Tom: 19 Trump: 80 请按任意键继续. . .

    28510

    【C++】STL 容器 - set 集合容器 ⑦ ( 查找元素 - set#find 函数 | 获取元素个数 - set#count 函数 )

    #find 函数 一、查找元素 - set#find 函数 1、函数原型 简介 在 C++ 语言的 STL 标准模板库 , std::set 集合容器 是一个存储唯一元素容器 , 该容器的底层使用 红黑树...数据结构 实现 ; std::set 容器是有序的 , 存储元素时 会自动按指定规则进行排序 ; std::set 集合容器类 提供了一个 find 成员函数 , 用于查找 集合容器中 指定值的元素...< endl; } // 控制台暂停 , 按任意键继续向后执行 system("pause"); return 0; }; 执行结果 : 找到元素 : 3 请按任意键继续. . ....<< "元素3 : " << count << endl; cout << "元素6 : " << count2 << endl; // 控制台暂停 , 按任意键继续向后执行 system...("pause"); return 0; }; 执行结果 : 元素3 : 1 元素6 : 0 请按任意键继续. . .

    83310

    c++ stl容器_c++ std是什么

    vector v1(v2) // 执行的copy初始化,此时v1与v2的内容相同 vector v1 = v2    // 与上面相同,都会执行copy...删除操作: v1.erase(iterator)     // 删除人人迭代器指定的元素,返回被删除元素之后的元素的迭代器。...小结: vector容器最重要的特性是: 它在一段连续的内存空间中存储元素, 可以在常量时间内对vector容器进行随机访问,并且可以很高效的在vector的尾部进行添加与删除操作,在vector中间或头部添加与删除元素的效率很低...它的所有特性与vector相同,包括存储在连续的空间/快速随机访问/高效在尾部插入与删除/低效在中间插入与删除等, string的迭代器也支持算术运算。...以后什么时候用它的时候,再来介绍。 有序关联容器 关联容器与顺序容器最大的区别在于关联容器没有下标,都过键值或 值本身进行索引。

    66010

    C++删除map容器中指定值的元素

    map容器是C++ STL中的重要一员,平时会遇到删除map容器中value为指定元素的问题,例如删除所有字符串为"123"或者能整除3的元素。...1 map容器下的方法说明 由于map容器下的方法较多,这里只列举代码中用到的几个方法: insert()方法: 1 2 3 4 5 6 //插入val到pos的后面,然后返回一个指向这个元素的迭代器...erase()方法: 1 2 3 4 //erase()函数删除在pos位置的元素,或者删除在start和end之间的元素,或者删除那些值为key的所有元素 void erase( iterator...2 删除map容器中指定的字符串 下面代码中map容器的value对应的是一个string类型的指针,在初始化时类似于string *p = new string("123");。..."map1[" first second << "]" << endl; } return 0; } 效果如下图所示: 4 附录 STL

    43910

    【C++】STL 容器 - set 集合容器 ② ( set 集合容器常用 api 简介 | 使用迭代器进行正向迭代与反向迭代 | 集合容器插入元素 | 插入单个元素 | 插入多个元素 )

    end() const; 获取指向尾元素的反向迭代器 : 该函数返回一个反向迭代器 , 指向集合容器的最后一个元素 ; 如果集合容器为空 , 则此操作未定义 ; 反向迭代器从集合的尾部向头部移动 ;...二、set 集合容器插入元素 1、插入单个元素 - insert 函数 在 C++ 的 标准模板库 ( STL , Standared Template Library ) 中 , set 容器是一个有序的集合...("pause"); return 0; }; 执行结果 : 1 2 3 5 7 9 请按任意键继续. . . 2、插入多个元素 - insert 函数 调用 set 集合容器的 insert 函数...("pause"); return 0; }; 执行结果 : 1 2 3 5 7 9 请按任意键继续. . . 3、插入指定迭代器范围的元素 - insert 函数 调用 set 容器的 insert...函数 , 传入 2 个迭代器对象 , 可以将另外一个容器指定范围的元素插入到 set 集合容器中 , 插入的多个元素会在 set 容器中自动排序 ; 被插入元素的 另外的集合 , 可以不是 set 集合

    87910

    【C++】STL 容器 - map 关联容器 ④ ( map 容器常用 api 操作 | 查找指定元素 | 获取元素个数 | 获取大于等于指定键的元素 | 获取大于指定键的元素 | 获取等于指定键 )

    STL , Standard Template Library ) 中 , std::map 关联容器类 提供了 find() 成员函数 , 用于 查找容器中是否存在具有特定键 的元素 , 函数原型如下...返回一个指向该 键 所在 pair 对组元素 的迭代器 ; 如果 在 map 容器中 没有找到 该键 , 则 返回指向容器末尾的迭代器 , 该迭代器指向 容器中最后一个值的后面位置 , 不可取值 ;...二、获取元素个数 - std::map#count() 函数 1、函数原型简介 在 std::map 关联容器 中 , 提供了 count() 成员函数 , 用于 统计容器中具有特定 键 Key 的元素的数量...三、获取大于等于指定键的元素 - std::map#lower_bound 函数 1、函数原型简介 在 C++ 语言 的 标准模板库 ( STL , Standard Template Library...四、获取大于指定键的元素 - std::map#upper_bound 函数 1、函数原型简介 在 C++ 语言 的 标准模板库 ( STL , Standard Template Library )

    1.2K10

    STL源码拆解】forward_list容器插入、删除等是怎么实现的

    按照惯例,还是先看一下本文大纲,如下: 1. forward_list插入操作 插入操作一般来讲,都是分为头部插入、尾部插入和中间插入,对于forward_list来讲,因为它没有办法直接操作尾部,如要操作尾部...1.2 中间插入 从中间插入,其实就是在指定位置插入结点,还是先看看函数原型,如下: iterator insert_after(const_iterator __pos, const _Tp& __val...2. forward_list删除操作 删除与插入比较类似,对于forward_list而言,也是只有头部删除中间删除两种情况,下面具体看看实现。...结合整个调用来看,从头部删除,其实就是删除头结点指向的结点,并让头结点指向第二个链表结点。...2.2 根据指定位置删除 删除还有一种情况,从某个指定的位置进行删除,函数原型如下: iterator erase_after(const_iterator __pos) { return

    79550

    如何优雅的传递 stl 容器作为函数参数来实现元素插入和遍历?

    (有的人可能觉得我多此一举,直接在函数里访问 m_svrmsgs 成员不就行了,为什么要通过参数传递呢?...首先直接使用迭代器是不行了,因为我们现在要往容器里插入元素,迭代器只能遍历元素,一点帮助也没有。...= vec.end (); ++ it) 7 printf ("%d\n", *it); 8 9 return 0; 10 } 为了在容器尾部插入元素,标准库算法借助了...看来只是用 back_insert_iterator 代替了 back_inserter 就好了,back_insert_iterator 又是一个什么鬼?...结语 其实本文讲解了一种通用的通过 iterator 读取容器、通过 inserter 插入容器元素的方法,这种方式较之直接传递容器本身“优雅”不少,虽然不能实现 100% 无缝切换容器,但是也提供了极大的灵活性

    3.7K20

    C++ STL快速入门

    STL是C++中的标准模板库,本文不深究STL的发展以及版本,以囫囵吞枣的形式讲一些STL组成部分。 STL容器STL学习中要重点关注的,STL容器有两大类,顺序容器和关联容器。...将元素插入容器时,指定在什么位置(尾部、头部或中间某处)插入,元素就会位于什么位置。...但是中间插入元素删除元素的话,需要移动后面的元素,所以时间复杂度是和删除元素的位置以及容器元素个数有关。...它有两种 vector 没有的成员函数: void push_front (const T & val);  //将 val 插入容器的头部 void pop_front();  //删除容器头部的元素...因为元素被修改后,容器并不会自动重新调整顺序,于是容器的有序性就会被破坏,再在其上进行查找等操作就会得到错误的结果。因此,如果要修改set容器中某个元素的值,正确的做法是先删除元素,再插入新元素

    9810
    领券