DHCP 指纹的 HashMap 实现
HashMap implementation for DHCP fingerprints
我正在用 C++ 实现哈希映射。我是 C++ 的新手。我必须像这样存储值。
摩托罗拉 = 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;
在这里,每个地图元素由一对string
和一个vector <int>
.
组成
string --> vector<int>
然后你必须先创建一个 vector
的整数,然后再添加到 map
。如果您没有不断搜索值的应用程序,您甚至可以使用 string
作为值(但它有它自己的缺点,因为存储 string
比 int
昂贵s.).
然后它看起来像:
std::map<string, string > map_Data;
这当然取决于您的应用程序和读取数据的方式。
您可以使用列表数组将其实现为您自己的哈希映射。但这会使事情复杂化。
编辑:
#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;
}
参考此 link 向矢量添加数据:
http://www.cplusplus.com/reference/vector/vector/vector/
我看到你刚开始使用 C++。
以下是您自己实现此功能所需的广泛概述:
1) 由于您事先知道大小,并且您对矢量不太熟悉,请考虑使用预定大小的数组。(这将用作您的地图)
2) 现在,你有 2 个字符串要存储,对应于一个键和一个值对。
3) 你需要决定什么是键,这取决于对中哪个值是唯一的(思考)
4) 关于实现细节,您根本不会按原样存储密钥(字符串)。你需要散列它。要对其进行哈希处理,您需要一个哈希函数。看看here
一个常用的函数是使用每个字符的ascii值,
乘以它在基数 256 (ASCII) 中的位值;'
模一个大素数 ~~ 数组的大小。
为什么这样? (阅读link!不要盲目跟风,你是在学习,而不是黑客:))
5)现在,散列映射到底是如何工作的?这个值你刚刚散列returns一个INT,它对应于你数组的INDEX,其中存储了相应KEY(我们刚刚散列得到INDEX)的VALUE。
听起来不错?
如果您需要帮助,请告诉我!
我正在用 C++ 实现哈希映射。我是 C++ 的新手。我必须像这样存储值。
摩托罗拉 = 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;
在这里,每个地图元素由一对string
和一个vector <int>
.
string --> vector<int>
然后你必须先创建一个 vector
的整数,然后再添加到 map
。如果您没有不断搜索值的应用程序,您甚至可以使用 string
作为值(但它有它自己的缺点,因为存储 string
比 int
昂贵s.).
然后它看起来像:
std::map<string, string > map_Data;
这当然取决于您的应用程序和读取数据的方式。 您可以使用列表数组将其实现为您自己的哈希映射。但这会使事情复杂化。
编辑:
#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;
}
参考此 link 向矢量添加数据: http://www.cplusplus.com/reference/vector/vector/vector/
我看到你刚开始使用 C++。
以下是您自己实现此功能所需的广泛概述:
1) 由于您事先知道大小,并且您对矢量不太熟悉,请考虑使用预定大小的数组。(这将用作您的地图)
2) 现在,你有 2 个字符串要存储,对应于一个键和一个值对。
3) 你需要决定什么是键,这取决于对中哪个值是唯一的(思考)
4) 关于实现细节,您根本不会按原样存储密钥(字符串)。你需要散列它。要对其进行哈希处理,您需要一个哈希函数。看看here 一个常用的函数是使用每个字符的ascii值, 乘以它在基数 256 (ASCII) 中的位值;' 模一个大素数 ~~ 数组的大小。 为什么这样? (阅读link!不要盲目跟风,你是在学习,而不是黑客:))
5)现在,散列映射到底是如何工作的?这个值你刚刚散列returns一个INT,它对应于你数组的INDEX,其中存储了相应KEY(我们刚刚散列得到INDEX)的VALUE。
听起来不错?
如果您需要帮助,请告诉我!