Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
DHCP指纹的HashMap实现 我在C++中实现哈希映射。我是C++新手。我必须像这样存储值_C++_Hashmap - Fatal编程技术网

DHCP指纹的HashMap实现 我在C++中实现哈希映射。我是C++新手。我必须像这样存储值

DHCP指纹的HashMap实现 我在C++中实现哈希映射。我是C++新手。我必须像这样存储值,c++,hashmap,C++,Hashmap,摩托罗拉=01 33 03 06 15 26 28 51 58 59 Windows Phone=01 15 03 06 44 47 31 33 121 249 252 43 我有近50000个这样的值。 如何实现这一点?您可以为此目的使用std::map std::map<string, vector<int> > map_Data; 然后,在添加到映射之前,必须首先创建整数的向量。如果您没有一个不断搜索值的应用程序,您甚至可以使用字符串作为值(但它有自己的缺点,因为

摩托罗拉=01 33 03 06 15 26 28 51 58 59

Windows Phone=01 15 03 06 44 47 31 33 121 249 252 43

我有近50000个这样的值。
如何实现这一点?

您可以为此目的使用
std::map

std::map<string, vector<int> > map_Data;
然后,在添加到
映射
之前,必须首先创建整数的
向量
。如果您没有一个不断搜索值的应用程序,您甚至可以使用
字符串
作为值(但它有自己的缺点,因为存储
字符串
s比
int
s成本高)

然后它看起来像:

std::map<string, string > map_Data;
std::map\u数据;
当然,这取决于您的应用程序和读取数据的方式。 您可以使用列表数组将其实现为自己的哈希映射。但这会使事情复杂化

编辑:

#include <map>
#include <iostream>
#include <vector>

using namespace std;

int main(int argc, char* argv[]) {
    std::map<std::string, vector<int> > data;

    // assign data
    return 0;
}
#包括
#包括
#包括
使用名称空间std;
int main(int argc,char*argv[]){
地图数据;
//分配数据
返回0;
}
请参阅有关向矢量添加数据的链接:

< p>我看到你刚开始用C++。< /P> 以下是您自己实现此功能所需的大致概述:

1)因为你事先知道大小,而且你对向量不太熟悉,所以考虑使用一个预定大小的数组。(这将作为你的地图)

2) 现在,您有2个字符串要存储,对应于一个键和一个值对

3) 你需要决定什么是键,这取决于哪一个值在对中是唯一的(想想)

4) 说到实现细节,您根本不会按原样存储键(字符串)。你得把它弄碎。要对其进行散列,需要一个散列函数。看一看 常用函数是使用每个字符的ascii值, 乘以以256为基数的位置值(ASCII);' 对大素数进行模运算~~数组大小。 为什么会这样?(阅读链接!不要只是盲目地跟随它,你在学习,而不是黑客:)

5) 现在,哈希映射到底是如何工作的?刚刚散列的这个值返回一个INT,它对应于数组的索引,其中存储了相应键的值(我们刚刚散列以获取索引)

听起来不错


如果你需要帮助,请告诉我

为什么要实现自己的?使用我必须为每个deviceOK实现DHCP指纹,这就解释了。继续。我仍然不明白为什么无序映射对你不起作用。什么是向量?如果你问什么是
向量,它是一个动态大小的容器,用于不同类型的元素(但一次一种类型)。在这里,
向量
用于存储整数值。您可以使用数组,但由于不同名称的元素数量不同,这可能会使事情变得复杂#include#include#include int main(){std::map>std::string,vector>data;data[motorola]={10,20,22.43};return 0;}它是我的代码,它给我的向量没有定义为错误我想你现在应该明白了。如果不是,我假设你对C++没有概念。
#include <map>
#include <iostream>
#include <vector>

using namespace std;

int main(int argc, char* argv[]) {
    std::map<std::string, vector<int> > data;

    // assign data
    return 0;
}