zoukankan      html  css  js  c++  java
  • 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,后者相减之后的值为1
    int 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 ", 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 = 0; i < 5; ++i) { range = equal_range(a, a+5, b[i]); printf("low = %d, up = %d ", 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 0; }
  • 相关阅读:
    Ubuntu ctrl+alt会导致窗口还原的问题
    Ubuntu设置显示桌面快捷键
    ubuntu鼠标和触摸板的禁用
    Codeforces Round #271 (Div. 2) F题 Ant colony(线段树)
    友盟社会化分享
    ZOJ 3890 Wumpus
    九种迹象表明你该用Linux了
    Java集合源代码剖析(二)【HashMap、Hashtable】
    01_GIT基础、安装
    Launcher知识的demo,手机管家小伙家与悬浮窗
  • 原文地址:https://www.cnblogs.com/Lyush/p/3210127.html
Copyright © 2011-2022 走看看