【发布时间】:2011-05-24 21:47:53
【问题描述】:
密钥是二进制垃圾,我只将它们定义为chars,因为我需要一个 1 字节数组。
它们可能包含null 字节。
现在的问题是,当我有两个键时:ab(0)a 和 ab(0)b((0) 是 null 字节),map 将它们视为字符串,认为它们相等而我不获得两个唯一的map 条目。
解决这个问题的最佳方法是什么?
【问题讨论】:
-
char[5]是std::map<>的无意义键类型。为什么要避开std::string/std::vector<char>/std::array<char, 5>? -
如何声明地图?怎么往里面插入数据?
-
只需要1字节的数组,为什么还要声明5字节的key?
-
@ildjarn:std::string 因为它以空字节结尾,std:vector 因为我还没有尝试过,std:array 因为它像 std::string 一样工作。 @Rob:我的意思是一组术语,每个 1 字节。
-
@GeorgeStephanos :我不确定您所说的“以空字节结尾”是什么意思——
std::string完全支持嵌入的空字符,std::vector<>和std::array<>也是如此...