众所周知,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. Android HandlerThread 使用

    HandlerThread 继承了 Thread,添加了 looper,queue 的支持.可以为 Handler 提供线程服务,并可对 执行的任务进行简单的管理. Handler 默认工作在主线程, ...

  2. Java的String、StringBuffer和StringBuilder的区别

    1.String 2.Stringbuffer 3.StringBuilder 4.三者之间的区别 5.使用策略 1.String public final class String implemen ...

  3. C#画图解决闪烁问题

    导致画面闪烁的关键原因分析:       一.绘制窗口由于大小位置状态改变进行重绘操作时,绘图窗口内容或大小每改变一次,都要调用Paint事件进行重绘操作,该操作会使画面重新刷新一次以维持窗口正常显示 ...

  4. Java开发之反射的使用

    通过类名获取类. Class serviceManager = Class.forName("android.os.ServiceManager"); 获取方法 Method me ...

  5. Git for windows 中文乱码解决方案

    1.git status时显示乱码,如下: \316\304\261\276\316\304\265\265.txt 解决方案: $ git config --global core.quotepat ...

  6. TCP建立连接和释放的过程,及TCP状态变迁图

    一.TCP报文格式 下面是TCP报文格式图: 重要字段介绍: (1)序号:Seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记. (2)确认序号:Ack序号,占 ...

  7. 1137. Bus Routes(dfs)

    1137 做过一样的 怎么又忘了 再一次搜超时 不用回溯 #include <iostream> #include<cstdio> #include<cstring> ...

  8. poj 2115 C Looooops(扩展gcd)

    题目链接 这个题犯了两个小错误,感觉没错,结果怒交了20+遍,各种改看别人题解,感觉思路没有错误,就是wa. 后来看diccuss和自己查错,发现自己的ecgcd里的x*(a/b)写成了x*a/b.还 ...

  9. 强势解决:windows 不能在本地计算机中起动Tomcat参考特定错误代码1

    Tomcat添加系统服务:service.bat install 启动本服务的时候却提示“windows 不能在本地计算机中起动 Apache Tomcat参考特定错误代码1,若不是Microsoft ...

  10. 解决jQuery对表单serialize后出现的乱码问题

    通过看jQuery源码可以知道,serialize方法是通过encodeURIComponent编码的,所以解决乱码的最笨方法:  1.重新分解序列化后的值  2.把分解的值重新decodeURICo ...