众所周知,map有find,但vector的find只能调用algorithm中的find通用方法。

参考《How to find an item in a std::vector?

对于结构体来说,如何定义==呢?

想到了重载==操作符,通常的情形是重载相同类型,在例子中,我重载了int类型的。

结果也过了,感觉很请强大,具体参考如下代价

#include <vector>
#include <algorithm>
using namespace std;
struct ReaderInfo {
int key;
size_t value;
bool operator == (const ReaderInfo& other) const {
return this->key == other.key;
}
bool operator == (int key) const {
return this->key == key;
}
};
int main()
{
vector<ReaderInfo> read_map;
ReaderInfo info;
for (int i = ; i < ; ++i) {
info.key = i;
info.value = i;
read_map.push_back(info);
}
for (vector<ReaderInfo>::const_iterator it = read_map.begin();
it != read_map.end(); ++it) {
printf("key = %d\t value = %d\n", it->key, it->value);
}
printf("###########################################\n");
vector<ReaderInfo>::iterator xb = find(read_map.begin(),
read_map.end(), );
if (xb != read_map.end()) {
xb->value += ;
printf("key = %d\t value = %d\n", xb->key, xb->value);
}
// 删除key
read_map.erase(xb);
for (vector<ReaderInfo>::const_iterator it = read_map.begin();
it != read_map.end(); ++it) {
printf("key = %d\t value = %d\n", it->key, it->value);
}
return ;
}

vector 之 find 重载的更多相关文章

  1. STL—Vector简介

    有关C++ STL 中的vector向量的用法(代码示例) 一. 简介 Vector是一个称为向量的顺序容器(不明白顺序容器与关联容器的可以Google). 二. 特点 1. 动态(相当于一个动态数组 ...

  2. C++ STL vector容器学习

    STL(Standard Template Library)标准模板库是C++最重要的组成部分,它提供了一组表示容器.迭代器.函数对象和算法的模板.其中容器是存储类型相同的数据的结构(如vector, ...

  3. 线性表实现简单vector

    实现一个简单的vector Vector基于数组实现,可以复制并且其占用的内存可以自动回收(通过析构函数),可以调整Vector的大小,以及容量(容量的改变是通过为基本数组分配一个新的内存块,然后复制 ...

  4. STL 小白学习(3) vector

    #include <iostream> using namespace std; #include <vector> void printVector(vector<in ...

  5. C/C++注册动态对象到Lu系统并进行运算符重载

    欢迎访问Lu程序设计 C/C++注册动态对象到Lu系统并进行运算符重载 1 说明 要演示本文的例子,你必须下载Lu32脚本系统.本文的例子需要lu32.dll.lu32.lib.C格式的头文件lu32 ...

  6. C++ STL标准模板库(vector)

    //vector的使用 #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<vector> using na ...

  7. Cocos2d-x3.0模版容器之中的一个:cocos2d::Vector&lt;T&gt;

    版本号:v3.0 beta以后 语言:C++ 定义在 "COCOS2DX_ROOT/cocos/base" 路径下的 "CCVector.h" 的头文件里. t ...

  8. C++中的Point类与vector类的简单处理

    首先设计Vector与Point的表示方法,再依次完善两个类中的构造函数,复制构造函数等. 向量由两个点表示,当进行运算的时候,转化起点坐标为(0,0): 第14行:由于Vector需要用到Point ...

  9. 链表vector

    根据逻辑次序的复杂程度,大致可以将各种数据结构划分为线性结构.半线性结构与非线性结构三大类. 在线性结构中,各数据项按照一个线性次序构成一个整体.最为基本的线性结构统称为序列(sequence),根据 ...

随机推荐

  1. GridLayoutManager

    GridLayoutManager Class Overview A RecyclerView.LayoutManager implementations that lays out items in ...

  2. VS2010中如果忘记函数所在的头文件或者忘记函数的输入输出参数类型怎么办?

    先随便找一个熟悉的函数,右击-转到定义,然后写出目标函数,右击-转到定义

  3. 禁止ie缓存

    nocache.jsp:(后台配置)<%response.setHeader("Cache-Control","no-cache"); //HTTP 1. ...

  4. Ajax的“dataType”乱用的陷阱

    $.doAjax({ url : "areaAction_synchronizeArea.do", data : { 'vrvRangeUrl' : synAreaHTTP ,'v ...

  5. bzoj1797: [Ahoi2009]Mincut 最小割

    最大流+tarjan.然后因为原来那样写如果图不连通的话就会出错,WA了很久. jcvb: 在残余网络上跑tarjan求出所有SCC,记id[u]为点u所在SCC的编号.显然有id[s]!=id[t] ...

  6. BZOJ2594: [Wc2006]水管局长数据加强版

    题解: 裸LCT+离线+二分+MST... 代码:(几乎摘抄自hzwer) #include<cstdio> #include<cstdlib> #include<cma ...

  7. [经验] - JQuery.Ajax + 跨域 (crossDomain) + POST + JSON + WCF RESTful, 5大陷阱和解决方案

    最近在开发WSS RESTful服务的时候, 碰到了这些个纠结的问题. 在网上查找了半天, 找到n多种解决方案, 但是都是部分的, 要么是没有跨域的情况, 要么是没有post的情况, 要么不是用WCF ...

  8. UVA 568 Just the Facts (水)

    题意: 求一个数n的阶乘,其往后数第1个不是0的数字是多少. 思路: [1,n]逐个乘,出现后缀0就过滤掉,比如12300就变成123,继续算下去.为解决爆long long问题,将其余一个数mod, ...

  9. OOP——UML六种关系

    UML定义的关系主要有:泛化.实现.依赖.关联.聚合.组合,这六种关系紧密程度依次加强,分别看一下 泛化 概念:泛化是一种一般与特殊.一般与具体之间关系的描述,具体描述建立在一般描述的基础之上,并对其 ...

  10. 2013.11.15 初学ant构建

    该做的事情都差不多做完了,今天开始用ant构建,所以学了下ant,其实要不是因为ubuntu时不时的抽风我应该早就可以开始构建了,但重写的时候也想清楚了一些逻辑,优化了一些地方.下面是我这辈子写的第一 ...