自己动手实现线性映射,哈希映射

一个简单的线性映射:

#include<vector>
#include<iostream>
using namespace std;
template<class Key,class Value>
class LinearMap
{
public:
    LinearMap(int size = 101) :arr(size)
    {
        current_size = 0;
    }

    void Put(const Key&k, const Value&v)
    {
        arr[current_size] = DataEntry(k, v);
        ++current_size;
    }
    Value Get(const Key&k)
    {
        for (int i = 0; i < current_size; ++i)
        {
            if (arr[i].key == k)
                return arr[i].value;
        }
        return Value();
    }
private:
    struct DataEntry{
        Key key;
        Value value;
        DataEntry(const Key&k = Key(), const Value&v = Value()) :key(k), value(v){};
    };
    vector<DataEntry> arr;
    int current_size;
};
int main()
{
    LinearMap<string, int> lm;
    lm.Put("tom", 99);
    lm.Put("Jack", 88);
    lm.Put("ly", 77);
    cout << lm.Get("Jack") << endl;
    return 0;
}

时间: 2024-08-07 14:18:32

自己动手实现线性映射,哈希映射的相关文章

哈希映射

哈希来源问题:关于统计一个字符串集合中,求出现次数最多的字符串思路:建立一个哈希映射(HashMap),其键为"字符串",值为"字符串出现次数",然后遍历字符串集合,如果字符串已存在,将键为该字符串的值加1,否则添加键值对".. 详解javascript哈希映射的HashMap 参考脚本之家 http://www.jb51.net/article/84771.htm Hash Map 的简单实现 //定义一个Hash Map var hashMap={ S

《Javascript权威指南》学习笔记之十二:数组、多维数组和符合数组(哈希映射)

Array(数组)是JavaScript中较为复杂的数据类型,同Java.C#.VB等程序语言的数组相比,Javascript数组中的元素不必为相同的数据类型,可以在数组每个元素上混合使用数字.日期.字符串.Object,甚至添加一个嵌套数组. 一.创建数组 1.var arr1 = new Array(); /var  arr2 = new Array(length); /var arr3 = new Array(element1,element2...); var arr4 = [eleme

706.设计哈希映射

2020-04-08 设计哈希映射 不使用任何内建的哈希表库设计一个哈希集合 具体地说,你的设计应该包含以下的功能 put(key, value):向哈希映射中插入(键,值)的数值对.如果键对应的值已经存在,更新这个值. get(key):返回给定的键所对应的值,如果映射中不包含这个键,返回-1. remove(key):如果映射中存在这个键,删除这个数值对. 题解: 思路1: 使用对象设计哈希集合 /** * Initialize your data structure here. */ va

HASH 字符串哈希 映射转化

哈希HASH的本质思想类似于映射.离散化. 哈希,通过给不同字符赋不同的值.并且钦定一个进制K和模数,从而实现一个字符串到一个模意义下的K进制数上. 它的主要目的是判重,用于DFS.BFS判重(八数码),字符串判断相等.出现等等. 本篇总结字符串哈希以及一些应用例题. 为什要用字符串哈希? 因为取出一个字符串是O(n)的,比较一遍又是O(n)的,况且要比较两个甚至多个.这就成了n^2级别的了. 那我们比较数字怎么就不用这么麻烦呢?因为数字可以直接比较,(虽然不知道内部是怎么实现的,反正比一位一位

leetcode 705 设计哈希映射

一  题目概述 不使用任何内建的哈希表库设计一个哈希集合 具体地说,你的设计应该包含以下的功能 add(value):向哈希集合中插入一个值. contains(value) :返回哈希集合中是否存在这个值. remove(value):将给定值从哈希集合中删除.如果哈希集合中没有这个值,什么也不做. 二 java算法实现 class MyHashSet { private Node[]arr=new Node[1024]; //2的指数,计算hash时可以用 & private class N

LeetCode 706. Design HashMap (设计哈希映射)

题目标签:HashMap 题目让我们设计一个 hashmap, 有put, get, remove 功能. 建立一个 int array, index 是key, 值是 value,具体看code. Java Solution: Runtime: 76 ms, faster than 27.53% Memory Usage: 58.2 MB, less than 31.57% 完成日期:03/18/2019 关键点:int array class MyHashMap { int [] map;

自己动手实现java数据结构(五)哈希表

1.哈希表介绍 前面我们已经介绍了许多类型的数据结构.在想要查询容器内特定元素时,有序向量使得我们能使用二分查找法进行精确的查询((O(logN)对数复杂度,很高效). 可人类总是不知满足,依然在寻求一种更高效的特定元素查询的数据结构,哈希表/散列表(hash table)就应运而生啦.哈希表在特定元素的插入,删除和查询时都能够达到O(1)常数的时间复杂度,十分高效. 1.1 哈希算法 哈希算法的定义:把任意长度的输入通过哈希算法转换映射为固定长度的输出,所得到的输出被称为哈希值(hashCod

Simhash相似哈希算法

前言 最近在阅读吴军博士的<<数学之美>>这门书,得到了很多的启发和思考,里面提到了一个概念---信息指纹.一般正常人提到这个概念,第一个想到的词应该是哈希映射算法,将任何对象都映射成一个独立的变量,一般这个变量是一个独有的数字,当然也不排除哈希碰撞的可能行.论单个对象,用哈希算法做一次映射,比较对象是否一致,这固然是可以的,但是如果想用哈希算法做一些文章之间的相似度计算的时候,可能传统的哈希算法就不见得是最佳的选择了,如果把整篇文章都作为一个超长字符串的去计算,准确率无法保证,因

海量数据处理策略之一—Hash映射 + Hash_map统计 + 堆/快速/归并排序

时间:2014.05.21 地点:基地 说明:根据July的博客等整理,感谢July的无私奉献 心情:现在都好开心呀,想着要为以后的时光好好奋斗~ --------------------------------------------------------------------------------------- 一.问题描述 海量日志数据,提取出某日访问百度次数最多的那个IP. 思路:由于数据集很大,我们的策略是先用哈希映射将海量数据集映射为适当数量的非海量数据集,这个非海量数据集的大