vector的插入、lower_bound、upper_bound、equal_range实例
对于这几个函数的一些实例以便于理解:
#include <cstdlib> #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #include <vector> using namespace std;int main() {// vector的插入:如果迭代器指向了某一元素,那么插入后将该元素挤到了后面,即插入到该元素之前 vector<int>v;v.push_back(2), v.push_back(3), v.push_back(4);vector<int>::iterator it;it = v.begin();it++;v.insert(it, 100);for (int i = 0; i < v.size(); ++i) printf("%d ", v[i]);puts("");/*Output:2 100 3 4*/ // lower_bound和upper_bound:今天看到这样的一个描述,[lower_bound, upper_bound)之间的元素与查找的元素相等// 如果没有该元素,那么lower_bound = upper_bound,在lower_bound位置插入则插入到该元素区间的最前面,在// upper_bound位置插入则插入到该元素区间的最后面,如果没有该元素,那么两个位置就想等了 // 对于upper_bound,如果一个元素大于最大的元素和等于最后的元素其返回的结果相同,这是由于区间大小的限制 // 当时上述情况下lower_bound的结果会有所不同,很容易理解,前者相减之后的值为0,后者相减之后的值为1int a[5] = {1, 2, 2, 4, 5};int b[5] = {0, 1, 2, 5, 100};for (int i = 0; i < 5; ++i) {int x = lower_bound(a, a+5, b[i]) - a;int y = upper_bound(a, a+5, b[i]) - a;printf("low = %d, up = %d\n", x, y);}puts("");/* Output:low = 0, up = 0low = 0, up = 1low = 1, up = 3low = 4, up = 5low = 5, up = 5*/// equal_range:在一个排序的数组中返回与所查询值相等的区间,注意返回值是pair<iterator, iterator> // 其中前一个值为lower_bound的值,后一个数为upper_bound的值pair<int *, int *>range;for (int i = 0; i < 5; ++i) {range = equal_range(a, a+5, b[i]);printf("low = %d, up = %d\n", range.first-a, range.second-a);}/*Output:low = 0, up = 0low = 0, up = 1low = 1, up = 3low = 4, up = 5low = 5, up = 5*/return 0; }
vector的插入、lower_bound、upper_bound、equal_range实例相关推荐
- STL源码剖析 lower_bound | upper_bound | binary_search
lower_bound 二分查找的一种版本,试图在已经排序的区间内查找元素value,如果区间内存在和value数值相等的元素,便返回一个迭代器,指向其中的第一个元素. 如果没有数值相等的元素,会返回 ...
- C++ lower_bound() upper_bound() 函数用法详解(深入了解,一文学会)
find().find_if().search() 等.值得一提的是,这些函数的底层实现都采用的是顺序查找(逐个遍历)的方式,在某些场景中的执行效率并不高.例如,当指定区域内的数据处于有序状态时,如果 ...
- pair用法 lower_bound upper_bound
int a,b;pair<int,int>p;cin>>a>>b;p=make_pair(a,b);cout<<p.first<<" ...
- lower_bound()/upper_bound()函数(C++)
文章目录 1.lower_bound()/upper_bound()函数简单介绍 2.lower_bound()/upper_bound()函数分析 3.lower_bound()/upper_bou ...
- lower_bound, upper_bound, greater, less 用法
一般lower_bound(), upper_bound() 基本用法 定义: algorithm头文件的函数 功能: 二分查找,查询一个数组(vector也可以使用)中大于给定数的位置 条件: 因为 ...
- Python 操作Word文档插入图片和表格实例演示
Python 操作Word文档插入图片和表格实例演示 效果图 实现过程 ① python-docx 库安装 ② word 文档插入图片演示 ③ word 文档插入表格演示 [ 文章推荐 ] Pytho ...
- c++ 二分查找的函数 lower_bound upper_bound binary_search
简介 C++ STL 中二分查找函数主要有这三种: lower_bound() upper_bound() binary_search() 这三个函数都运用于有序区间. 用法 1. lower_bou ...
- sicily vector有序插入
实现了简单的vector有序插入,这个题目值得注意的点是1.当vector为空时,需要判断再排除 2.迭代器的使用是此段代码的特点 int insertVector(vector<int> ...
- python数据写入表格生成图片_python在word文档里插入图片和表格实例代码演示
# -*- coding: UTF8 -*- from docx import Document from docx.shared import Pt doc = Document() # 文件存储路 ...
最新文章
- 11个顶级 JavaScript 日历插件
- react(85)--error:Error creating bean with name ‘onlineStudyController‘:
- C++远征之封装篇——类和封装、实例化和对象成员访问
- ecshop活动页_ECSHOP团购活动,ECSHOP团购列表
- android --多线程下载
- iOS中的UISearchBar
- 【随感】我觉得,世界上最美好的乐器是钢琴和架子鼓
- vivado快速下载及解压安装教程
- visual studio 2017 installer 安装包制作过程出现的问题---无法注册模块 HRESULT -2147024769 请与您的技术支持人员联系...
- linux 网卡爽ip,linux服务器双网卡爽IP实现双线
- 【C语言刷题】汉诺塔问题
- (译)使用Go语言从零编写PoS区块链
- 【MATLAB】进阶绘图 ( Pie Chart 饼图 | pie 函数 | 三维饼图 | pie3 函数 )
- Walkthrough: Word 2007 XML 格式
- java 统计汉字个数_Java简单统计字符串中汉字,英文字母及数字数量的方法
- Veeam Availability Suite 9.5安装和配置
- 激光SLAM:Livox激光雷达硬件时间同步
- 人脸识别门禁有哪些功能呢?
- 主生产计划(MPS)及物料需求计划(MRP)
- IDF实验室 聪明的小羊
热门文章
- php如何查询数据是否存在,PHP判断数据库中的记录是否存在的方法,php数据库_PHP教程...
- rust如何进枪战服_天龙八部怀旧服九大门派详细打造攻略——少林篇
- k8s 带你一步步 创建用户账号(User Account)
- android中XMl文件的读取
- java加减乘除运算代码_从“位运算”炫技到“操作符”,再到逐步理解“群论”...
- 学Linux的你还在为正则表达式而挠头?
- element vue 动态单选_软件更新丨vue-element-admin 4.0.0 beta 发布,后台集成方案
- phpstorm xdebug本地调试断点不生效_phpstudy+phpstrom实现断点
- matlab textsac函数,哈工大-Matlab--2013年春季学期《MATLAB语言及应用》试题
- 查处的数据如何乱序_老司机总结常用镜像方法,让镜像数据更加可靠