九、STL算法-删除算法(unique、remove)
来源:互联网 发布:大数据先进技术研究院 编辑:程序博客网 时间:2024/05/22 01:59
STL算法-删除算法(unique、remove)
一、简介
删除算法的作用是删除一个容器里的某些元素,它具有以下2个特征:
- 删除不会使容器里的元素减少
- 删除算法不应作用于关联容器
容器里的元素被删除时,分以下几个步骤进行:
- 将所有应该被删除的元素看做空位子
- 用留下的元素从后往前移,依次去填空位子
- 元素往前移后,它原来的位置也就算是空位子
- 也应由后面的留下的元素来填上
- 最后,没有被填上的空位子,维持其原来的值不变
二、删除算法
三、程序示例
#include <iostream>#include <algorithm>#include <iterator>using namespace std;int main(){ int a[] = {0, 1, 3, 5, 2, 2, 2, 3, 6}; ostream_iterator<int> oit(cout, " "); int * p = remove(a, a+9, 2); copy(a, a+9, oit); cout<<endl<<p-a<<endl; //只会删除连续的相同的两个值,可以先排序,再使用unique int b[] = {0, 1, 3, 5, 2, 2, 2, 3, 6, 7}; int *p2 = unique(b, b+10); //可以输出容器删除元素后的全部元素值,也可以只输出到元素被删除后容器的"有效元素"的位置 // copy(b, b+10, oit); copy(b, p2, oit); return 0;}
输出:
0 1 3 5 3 6 2 3 6
6
0 1 3 5 2 3 6 7
第一个输出:删除2,剩下 { 0, 1, 3, 5, 空, 空, 空, 3, 6 },剩余的元素往前移,变成 { 0, 1, 3, 5, 3, 6, 空, 空, 空 },剩下的空位维持原来的值不变,即 { 0, 1, 3, 5, 3, 6, 2, 3, 6 }
第二个输出:删除2后,容器中剩下6个元素,p指向数组中下标为6的值,a即指针a[0],所以p-a输出6
0 0
- 九、STL算法-删除算法(unique、remove)
- C++ STL 算法:删除算法(3)unique、unique_copy
- C++ STL 算法:删除算法(1)remove、remove_if
- STL算法 unique
- 【STL】remove算法猜测
- STL算法---remove系列
- [STL] STL remove算法浅析
- STL源码剖析——STL算法之remove删除算法
- STL算法 unique的用法
- 删除算法 remove()
- STL之remove算法详解
- STL的remove算法详解
- STL算法 -------- 删除算法1
- STL算法 -------- 删除算法2
- STL算法 -------- 删除算法3
- STL算法库-删除算法
- 九、STL算法-排序算法(sort)
- STL algorithm算法unique,unique_copy(58)
- 【Android基础知识】ViewPager基本使用
- nyoj 277 车牌号
- 类似直播app点赞动画分析
- 打开pdm文件时,显示打印错误
- Action的生命周期
- 九、STL算法-删除算法(unique、remove)
- DAY7:leetcode #14 Longest Common Prefix
- C++中namespace和class的区别
- 使用 CJSON 在C语言中进行 JSON 的创建和解析的实例讲解
- SQL查看CLOB类型内容
- pixhawk mc_pos_control.cpp思路整理
- JAVA300笔记【0-5】
- Servlet开发(二)
- CocoaPods 命令和使用