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新版本SDK打开旧版本项目报错解决
1.Description Resource Path Location Type Unable to resolve target 'android-19 解决:打开project.properti ...
- BZOJ 1898 Swamp 沼泽鳄鱼(矩阵)
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=1898 题意:一个无向图.给出起点和终点,以及某些时刻某些点不能到达的信息.问从起点出发在 ...
- [51NOD]BSG白山极客挑战赛
比赛链接:http://www.51nod.com/contest/problemList.html#!contestId=21 /* ━━━━━┒ギリギリ♂ eye! ┓┏┓┏┓┃キリキリ♂ min ...
- objcopy
objcopy objcopy [options] infile [outfile] Copy the contents of the input object file to another fil ...
- 3D开发--CopperCube
CopperCube的常用接口,以及如何用javascript语言控制场景中的人物动作,或者获取任务的位置等信息
- 转载RabbitMQ入门(3)--发布和订阅
发布和订阅 (使用java 客户端) 在先前的指南中,我们创建了一个工作队列.这工作队列后面的假想是每一个任务都被准确的传递给工作者.在这部分我们将会做一些完全不同的事情–我们将一个消息传递给多个消费 ...
- Oracle行列互换 横表和纵表
/* 在实际使用sql工作中总会碰到将某一列的值放到标题中显示.就是总说的行列转换或者互换. 比如有如下数据: ID NAME KECHENG CHENGJI -- ---------- ------ ...
- 35、Android 性能优化、内存优化
http://blog.csdn.net/a_asinceo/article/details/8222104 http://blog.csdn.net/a_asinceo/article/detail ...
- android获取手机信息2
IMEI号,IESI号,手机型号: private void getInfo() { TelephonyManager mTm = (TelephonyManager) getSystemServic ...
- IOS 类别与扩展的区别 (category & extensions)
类别 .h @interface NSString(XXXXXX) -(NSInteger)getLen; @end .m @implementation NSString(XXXXXX) -(NSI ...