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(), v.push_back(), v.push_back();
vector<int>::iterator it;
it = v.begin();
it++;
v.insert(it, );
for (int i = ; 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,后者相减之后的值为1
int a[] = {, , , , };
int b[] = {, , , , };
for (int i = ; i < ; ++i) {
int x = lower_bound(a, a+, b[i]) - a;
int y = upper_bound(a, a+, b[i]) - a;
printf("low = %d, up = %d\n", x, y);
}
puts("");
/*
Output:
low = 0, up = 0
low = 0, up = 1
low = 1, up = 3
low = 4, up = 5
low = 5, up = 5
*/ // equal_range:在一个排序的数组中返回与所查询值相等的区间,注意返回值是pair<iterator, iterator>
// 其中前一个值为lower_bound的值,后一个数为upper_bound的值
pair<int *, int *>range;
for (int i = ; i < ; ++i) {
range = equal_range(a, a+, b[i]);
printf("low = %d, up = %d\n", range.first-a, range.second-a);
}
/*
Output:
low = 0, up = 0
low = 0, up = 1
low = 1, up = 3
low = 4, up = 5
low = 5, up = 5
*/
return ;
}
vector的插入、lower_bound、upper_bound、equal_range实例的更多相关文章
- vector 牛逼 +lower_bound+ upper_bound
vector 超级 日白 解决的问题空间问题,可以自由伸缩. 一下用法: 向量大小: vec.size(); 向量判空: vec.empty(); 末尾添加元素: vec.push_back(); / ...
- 二分查找法(binary_search,lower_bound,upper_bound,equal_range)
binary_search(二分查找) //版本一:调用operator<进行比较 template <class ForwardIterator,class StrictWeaklyCo ...
- lower_bound && upper_bound
用lower_bound进行二分查找 ●在从小到大排好序的基本类型数组上进行二分查找. 这是二分查找的一种版本,试图在已排序的[first,last)中寻找元素value.如果[first,last ...
- STL中的二分查找———lower_bound,upper_bound,binary_search
关于STL中的排序和检索,排序一般用sort函数即可,今天来整理一下检索中常用的函数——lower_bound , upper_bound 和 binary_search . STL中关于二分查找的函 ...
- lower_bound/upper_bound example
http://www.cplusplus.com/reference/algorithm/upper_bound/左闭右开 Return iterator to lower bound Returns ...
- sicily vector有序插入
实现了简单的vector有序插入,这个题目值得注意的点是1.当vector为空时,需要判断再排除 2.迭代器的使用是此段代码的特点 int insertVector(vector<int> ...
- php 获取ip地址的5种方法,插入用户登录日志实例
php 获取ip地址的5种方法,插入用户登录日志实例,推荐使用第二种方法 <?php //方法1: $ip = $_SERVER["REMOTE_ADDR"]; echo $ ...
- [STL]lower_bound&upper_bound
源码 lower_bound template <class ForwardIterator, class T> ForwardIterator lower_bound (ForwardI ...
- STL中的unique()和lower_bound ,upper_bound
unique(): 作用:unique()的作用是去掉容器中相邻元素的重复元素(数组可以是无序的,比如数组可以不是按从小到大或者从大到小的排列方式) 使用方法:unique(初始地址,末地址): 这里 ...
随机推荐
- 数32位 unsigned int中1的个数
参考文章:http://www.cnblogs.com/graphics/archive/2010/06/21/1752421.html 最简单的方法: int BitCount0(unsigned ...
- Oracle错误:ORA-01033
Oracle错误:ORA-01033 错误编码:ORA-01033: ORACLE initialization or shutdown in progress 故障描述:因为移动了数据库文件([NA ...
- Linux设置FQDN
FQDN是Fully Qualified Domain Name的缩写, 含义是完整的域名. 例如, 一台机器主机名(hostname)是www, 域后缀(domain)是example.com, 那 ...
- sql必知必会(第四版) 学习笔记
还有一个<Sqlserver2008技术内幕>的笔记,也很好!~ http://www.cnblogs.com/liupeng61624/p/4354983.html 温习一遍简单的sql ...
- 收藏本网站兼容火狐IE
<script type="text/javascript"> function AddFavorite(sURL, sTitle) {try { window.ext ...
- mysql高可用之PXC(Percona XtraDB Cluster)
简介 Percona XtraDB Cluster是MySQL高可用性和可扩展性的解决方案,Percona XtraDB Cluster提供的特性如下: 1).同步复制,事务要么在所有节点提交或不提交 ...
- File和URL的getPath()方法区别
java.io.File对象的getPath()方法返回文件的全路径名.如果是目录返回目录路径且结尾没有"\".如果是文件包含文件名. java.io.File对象的getName ...
- jqeury之平移轮播
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- Hibernate jar包详解
Hibernate一共包括了23个jar包,令人眼花缭乱.本文将详细讲解Hibernate每个jar包的作用,便于你在应用中根据自己的需要进行取舍. 下载Hibernate,例如2.0.3稳定版本,解 ...
- Android 静默安装
有时候我们需要软件实现静默安装,但是Android并未提供相应的API,然而我们知道命令行安装android的时候是不会提示用户的,所有要实现这个功能,我们就可以从执行命令行的方式实现.android ...