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(初始地址,末地址): 这里 ...
随机推荐
- Android剪切板传递数据传递序列化对象数据
一.剪切板的使用介绍 1. 剪切板对象的创建 使用剪切板会用到,ClipboardManager对象,这个对像的创建不可以使用构造方法,主要是由于没有提供public的构造函数(单例模式),需要使用A ...
- mysql delete数据 空间占用不减少的解决办法
今天空间商告诉我数据库空间满了,检查了一下,发现网站用户行为记录数据表竟然占了20多MB.积累了半年了,该删除释放一下空间了.果断delete之后发现数据库空间竟然没少,虽然数据记录数是零. 原来这是 ...
- Mysql slow query log
一.概念部分: 顾名思义,慢查询日志中记录的是执行时间较长的query,也就是我们常说的slow query,通过设--log-slow-queries[=file_name]来打开该功能并设置记录 ...
- Word and MediaElement
function jmc_new_lib(){// Because we still want the script to load but not the styleswp_enqueue_scri ...
- sharepoint 开发
1. 客户端界面搜索 <div> 业务员:<).match(reg); ]);return null; } function search() { var k=document.ge ...
- OracleHelper
/// <summary> /// OracleServer数据库访问的通用工具类 /// </summary> public abstract class OracleHel ...
- Java基础知识点
以下10点为JAVA 基础知识,后面将足以总结和完善以备面试 数据类型 (包装类,字符串,数组) 异常处理 Java IO和NIO 数据结构 (集合和容器 ) 多线程(并发) 网络通信(协议) 面向对 ...
- eclipse 下调整jdk和tomcat的jvm参数
eclipse 下调试和运行,往往会出现调整java.lang.OutOfMemoryError: Java heap space 产生的原因我猜测是使用了maven,subversion,myla ...
- Android中直播视频技术探究之---基础知识大纲介绍
一.前言 最近各种视频直播app到处都是,各种霸屏,当然我们也是需要体验的,关于视频直播的软件这里就不介绍了,在不是技术的人来看,直播是一种潮流,是一种娱乐方式,但是作为一个高技术的,我们除了看看,更 ...
- placeholder 解决UITextField中placeholder和text文本同时显示的问题
TextField都使用了placeholder属性,但在代码中又设置了text属性,因此ViewController会同时显示placeholder文本和text文本. 这个问题让我彻底崩溃.按道理 ...