map进行字符串的查找
来源:互联网 发布:手机财经软件 编辑:程序博客网 时间:2024/06/15 15:57
本文是基于map的key和value进行数据的存放两组数据分别是krc_keyvalue和krc_keyvalue1。并对krc_keyvalue中的value值在krc_keyvalue1中的value值进行查找,如果krc_keyvalue1中找到krc_keyvalue中相同的value,则打印find it,否则打印not found。
由于map中的find成员函数只能对key进行查找,而不能对value进行查找,所以在使用find_if进行value的查找时需要进行操作符的重载。当然,在实际使用过程中如果方便就采用find函数进行key的查找。
1、进行value的查找
代码如下:
#include <stddef.h>#include <iostream>#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <string>#include <tr1/functional>#include <time.h>#include <map>#include <algorithm>//using namespace std;#define BITWORD 32#define ARRNUM 100int mmin = 10000000;int mmax = 99999999;int N = (mmax-mmin+1);#define BITS_PER_WORD 32#define WORD_OFFSET(b) ((b) / BITS_PER_WORD)#define BIT_OFFSET(b) ((b) % BITS_PER_WORD)void SetBit(int *words, int n){ n -= mmin; words[WORD_OFFSET(n)] |= (1 << BIT_OFFSET(n));} void ClearBit(int *words, int n){ words[WORD_OFFSET(n)] &= ~(1 << BIT_OFFSET(n));} int GetBit(int *words, int n){ int bit = words[WORD_OFFSET(n)] & (1 << BIT_OFFSET(n)); return bit != 0;}//times33算法,它是一个字符串hash //”ret = ret << 5 + ret + str;”这句话,其实就是ret33 + *str 的意思,左移5位,相当于乘以32,这样做的目的是充分利用硬件的计算速度。 int times33(char *str) { int ret = 0; while(*str) { ret = ret <<5 + ret + *str; } return ret; } class map_value_finder { public: map_value_finder(const std::string &cmp_string):m_s_cmp_string(cmp_string){} bool operator ()(const std::map<int, std::string>::value_type &pair) { return pair.second == m_s_cmp_string; } private: const std::string &m_s_cmp_string; }; int main(){ //方法2:采用hash_map std::map<int,std::string> krc_keyvalue; krc_keyvalue[1]="dj"; krc_keyvalue[2]="南山南"; krc_keyvalue[3]="中国好声音";//11号的歌曲 //krc_keyvalue.insert(std::pair<int, std::string>(1,"dj"));//不同的插入方式 std::map<int,std::string> krc_keyvalue1; krc_keyvalue1[1]="小苹果";//9号歌曲 krc_keyvalue1[2]="中国好声音"; krc_keyvalue1[3]="默";//11号的歌曲 std::map<int,std::string>::iterator iter; std::map<int,std::string>::iterator it; for(iter=krc_keyvalue.begin();iter != krc_keyvalue.end();iter++) { it=krc_keyvalue1.end(); it = std::find_if(krc_keyvalue1.begin(), krc_keyvalue1.end(), map_value_finder(iter->second)); if (it == krc_keyvalue1.end()) printf("not found\n"); else printf("find it\n"); } getchar(); return 0; }2、采用find查找key,这是find默认的操作,用得最多,在此省略。
0 0
- map进行字符串的查找
- JavaScript 进行字符串的查找
- nyoj685 查找字符串(map)
- NYOJ 685 查找字符串(map)
- map查找时注意字符串的比较方式。
- map的查找
- map的查找
- Map按key进行排序 And Map拼接字符串
- 对字符串进行 匹配,查找,替换,判断。
- MFC在txt文本进行字符串查找
- awk条件查找字符串并进行替换
- 设计一个程序,从键盘上输入若干字符串,利用算法库中的查找函数对给定的字符串进行查找,将查找后的结果输出
- 子字符串的查找
- vim的查找字符串
- 字符串的查找
- 字符串的查找删除
- vim的查找字符串
- vim的查找字符串
- linux shell 自定义函数(定义、返回值、变量作用域)介绍
- 洛谷1290 欧几里德的游戏
- 不重叠模式串个数 KMP hdu 2087 剪花布条
- Unity3D:spine使用
- 初等数论四大定理(威尔逊定理,欧拉定理,中国剩余定理,费马小定理)
- map进行字符串的查找
- 解决Mysql乱码问题
- poj1789(MST)
- SSL,TLS,IPSec 和HTTPS
- cell背景颜色设置
- MySQL 日期时间函数
- SVN常用命令
- UIView的layoutSubviews和drawRect
- 单例模式,完全版