std的find和reverse_iterator联合使用

上代码:

// test2013.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <stdlib.h>
#include <stdio.h>
#include<iostream>
#include<vector>
#include<map>
#include<string>
using namespace std;

struct CmpByKeyNumber {
    bool operator()(const int& k1, const int& k2) {
        return k1 < k2;  //升序排列
    }
};

int _tmain(int argc, _TCHAR* argv[])
{
    std::map<int, string, CmpByKeyNumber> arr;

    arr.insert(make_pair(0, "dd"));
    arr.insert(make_pair(1, "bbbbb"));
    arr.insert(make_pair(2, "aaaaaaaaaaa"));

    std::map<int, string>::iterator itTemp = arr.find(2);
    if (itTemp == arr.end())
    {
        return -2;
    }

    /*
    这里转为反向迭代器。
    注意,正向迭代器转为反向迭代器后,反向迭代器指向的是正向迭代器的前一个元素。
    所以,这里用了++:先++,itTemp指向下一个元素(即是arr.end() ),
    通过这样的方式,反向迭代器和正向迭代器指向的都是同一个pair。
    */
    std::map<int, string>::reverse_iterator it(++itTemp);
    for (; it != arr.rend(); it++)
    {
        int key = it->first;
        string dd = it->second;
        printf("pair( %d, %s )\n", key, dd.c_str());
    }

    printf("\ndone\n");
    getchar();
    return 0;
}

运行效果:

完。

时间: 2024-08-30 06:06:03

std的find和reverse_iterator联合使用的相关文章

矩阵的特征值和特征向量的雅克比算法C/C++实现

矩阵的特征值和特征向量是线性代数以及矩阵论中很重要的一个概念.在遥感领域也是经经常使用到.比方多光谱以及高光谱图像的主成分分析要求解波段间协方差矩阵或者相关系数矩阵的特征值和特征向量. 依据普通线性代数中的概念,特征值和特征向量能够用传统的方法求得,可是实际项目中一般都是用数值分析的方法来计算,这里介绍一下雅可比迭代法求解特征值和特征向量. 雅克比方法用于求实对称阵的所有特征值.特征向量. 对于实对称阵 A,必有正交阵 U.使 U TA U = D. 当中 D 是对角阵,其主对角线元 li 是

BitCoin源码研究(1)-Base58编码

Base58编码由58个数字和大小写字母组成,BitCoin源码中定义及注释如下: /** All alphanumeric characters except for "0", "I", "O", and "l" */ static const char* pszBase58 = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"; 如

C++基础实例-结构类型(3)

struct #if 0 #include<iostream> using namespace std; main() { //定义结构类型 struct books { char title[20]; char author[15]; int pages; float price; } ; //声明结构变量 struct books Zbk={"VC++ ","Xc",295,35.5}; books Wbk; //对结构变量的输出 cout<&

Cocos2d适应屏幕分辨率

我使用的版本是cocos2d-2.0-x-2.0.4,cocos2dx-2.0版本对多分辨率适配提供了很好的支持,使用起来比1.0版本要简单些,1.0版本的适配可以参考这篇博文. 1. 做2.0版本的适配首先需要了解下面这些知识. (1)适配策略 2.0版本提供了三种适配策略: kResolutionNoBorder:超出屏幕的部分会被裁剪,两侧没有黑边,铺满屏幕,按图片原始比例显示,图片不变形. kResolutionShowAll:整个游戏界面是可见的,会按原始比例进行缩放,图片不变形,但两

[NOIP2014]联合权值

描述 无向连通图G有n个点,n-1条边.点从1到n依次编号,编号为i的点的权值为Wi  ,每条边的长度均为1.图上两点(u, v)的距离定义为u点到v点的最短距离.对于图G上的点对(u, v),若它们的距离为2,则它们之间会产生Wu×Wv的联合权值. 请问图G上所有可产生联合权值的有序点对中,联合权值最大的是多少?所有联合权值之和是多少? 输入格式 输入文件名为link.in. 第一行包含1个整数n. 接下来n-1行,每行包含2个用空格隔开的正整数u.v,表示编号为u和编号为v的点之间有边相连.

洛谷 P1351 联合权值(NOIp2014D1T2)

题目描述 无向连通图G 有n 个点,n - 1 条边.点从1 到n 依次编号,编号为 i 的点的权值为W i ,每条边的长度均为1 .图上两点( u , v ) 的距离定义为u 点到v 点的最短距离.对于图G 上的点对( u, v) ,若它们的距离为2 ,则它们之间会产生Wu×Wv 的联合权值. 请问图G 上所有可产生联合权值的有序点对中,联合权值最大的是多少?所有联合权值之和是多少? 输入输出格式 输入格式: 输入文件名为link .in. 第一行包含1 个整数n . 接下来n - 1 行,每

洛谷——P1351 联合权值

https://www.luogu.org/problem/show?pid=1351 题目描述 无向连通图G 有n 个点,n - 1 条边.点从1 到n 依次编号,编号为 i 的点的权值为W i ,每条边的长度均为1 .图上两点( u , v ) 的距离定义为u 点到v 点的最短距离.对于图G 上的点对( u, v) ,若它们的距离为2 ,则它们之间会产生Wu×Wv 的联合权值. 请问图G 上所有可产生联合权值的有序点对中,联合权值最大的是多少?所有联合权值之和是多少? 输入输出格式 输入格式

HDU 5371 (2015多校联合训练赛第七场1003)Hotaru&#39;s problem(manacher+二分/枚举)

HDU 5371 题意: 定义一个序列为N序列:这个序列按分作三部分,第一部分与第三部分相同,第一部分与第二部分对称. 现在给你一个长为n(n<10^5)的序列,求出该序列中N序列的最大长度. 思路: 来自官方题解:修正了一些题解错别字(误 先用求回文串的Manacher算法,求出以第i个点为中心的回文串长度,记录到数组p中 要满足题目所要求的内容,需要使得两个相邻的回文串,共享中间的一部分,也就是说,左边的回文串长度的一半,要大于等于共享部分的长度,右边回文串也是一样. 因为我们已经记录下来以

HDOJ多校联合第五场

1001 题意:求逆序对,然后交换k次相邻的两个数,使得剩下的逆序对最少. 分析:题目用到的结论是:数组中存在一对逆序对,那么可以通过交换相邻两个数使得逆序对减少1,交换k次,可以最多减少k个. 嘉定ai>aj,i < j,如果ai,aj相邻的,那么显然可以通过交换减少1:不相邻的情况, 考虑ak,k = j-1; #11:ak > aj,那么ak,aj构成逆序对,交换后逆序对减少1: #12:ak<=aj,那么ai,ak构成逆序对,问题转化为更小规模,可以通过同样的方法进一步分析