vector 之 find 重载
众所周知,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 重载的更多相关文章
- STL—Vector简介
有关C++ STL 中的vector向量的用法(代码示例) 一. 简介 Vector是一个称为向量的顺序容器(不明白顺序容器与关联容器的可以Google). 二. 特点 1. 动态(相当于一个动态数组 ...
- C++ STL vector容器学习
STL(Standard Template Library)标准模板库是C++最重要的组成部分,它提供了一组表示容器.迭代器.函数对象和算法的模板.其中容器是存储类型相同的数据的结构(如vector, ...
- 线性表实现简单vector
实现一个简单的vector Vector基于数组实现,可以复制并且其占用的内存可以自动回收(通过析构函数),可以调整Vector的大小,以及容量(容量的改变是通过为基本数组分配一个新的内存块,然后复制 ...
- STL 小白学习(3) vector
#include <iostream> using namespace std; #include <vector> void printVector(vector<in ...
- C/C++注册动态对象到Lu系统并进行运算符重载
欢迎访问Lu程序设计 C/C++注册动态对象到Lu系统并进行运算符重载 1 说明 要演示本文的例子,你必须下载Lu32脚本系统.本文的例子需要lu32.dll.lu32.lib.C格式的头文件lu32 ...
- C++ STL标准模板库(vector)
//vector的使用 #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<vector> using na ...
- Cocos2d-x3.0模版容器之中的一个:cocos2d::Vector<T>
版本号:v3.0 beta以后 语言:C++ 定义在 "COCOS2DX_ROOT/cocos/base" 路径下的 "CCVector.h" 的头文件里. t ...
- C++中的Point类与vector类的简单处理
首先设计Vector与Point的表示方法,再依次完善两个类中的构造函数,复制构造函数等. 向量由两个点表示,当进行运算的时候,转化起点坐标为(0,0): 第14行:由于Vector需要用到Point ...
- 链表vector
根据逻辑次序的复杂程度,大致可以将各种数据结构划分为线性结构.半线性结构与非线性结构三大类. 在线性结构中,各数据项按照一个线性次序构成一个整体.最为基本的线性结构统称为序列(sequence),根据 ...
随机推荐
- Android应用开发学习笔记之Intent
作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz Intent是什么呢?来看Android官网上的定义: An intent is an abstractdescri ...
- python获取外网地址
# coding=gbk import sys,urllib.request,re url = "http://www.3322.org/dyndns/getip" #网页地址 m ...
- hibernate--lazy(懒加载)属性
关联映射文件中<class>标签中的lazy(懒加载)属性 Lazy(懒加载):只有在正真使用该对象时,才会创建这个对象 Hibernate中的lazy(懒加载):只有我们在正真使用时,它 ...
- java开发之多线程需要学习和理解的东西
40个Java多线程问题总结 http://www.codeceo.com/article/40-java-thread-problems.html
- npm安装插件提示
现在使用node的人群越来越多,咱也不能落后,得跟紧脚步才行. 今天使用 npm 安装插件的时候,出现以下提示,而且,安装程序看着好像终止了.而且,看到一个exit单词,就认为说安装出错了. $ np ...
- Java 基础之认识 Annotation
Java 基础之认识 Annotation 从 JDK 1.5 版本开始,Java 语言提供了通用的 Annotation 功能,允许开发者定义和使用自己的 Annotation 类型.Annotat ...
- scrapy wiki资料汇总
See also: Scrapy homepage, Official documentation, Scrapy snippets on Snipplr Getting started If you ...
- 【转载】React初学者入门须知
http://www.oschina.net/news/75530/9-things-every-reactjs-beginner-should-know react.js入门学习 看了一遍,没什么特 ...
- uva1262Password
解码,暴力. 恬不知耻地把暴力题解放了上来,因为k比较小,直接暴力找到字符串第k大就可以了. 编码解码就是根据组合数学公式算出来它到底在哪. dfs返回bool就能使得找到字典序第k大字符串以后退出d ...
- VS2005中乱码问题
VS2005打开某些文件(如.inc, js)的时候出现乱码: 解决方法: 工具 --> 选项 --> 文本编辑器 --> 将“自动检测不带签名的 UTF-8编码”选中保存即可. V ...