【发布时间】:2016-03-15 02:44:31
【问题描述】:
我有一对:typdef pair <unsigned char *, vector<int>> pair_t
我需要为该地图实现自己的比较功能,所以我尝试了:
struct myCmp
{
int operator()(unsigned char arr_1[10], unsigned char arr_2[10])
{
return memcmp(arr_1, arr_2, 10);
}
};
typdef pair <unsigned char *, vector<int>, **myCmp**> pair_t;
pair_t data(someCharArr, someIntVector);
我得到的错误信息是:
模板参数的数量错误(3 应该是 2)
我对@987654323@ 做了同样的事情,结果很好。
如何为pair创建自己的比较函数?
如何确定pair_t data(someCharArr, someIntVector);会找到正确的键(如果 char * 作为键)?
谢谢。
【问题讨论】:
-
为什么不使用
std::sting而不是char *。如果您使用std::string,则内置的比较运算符应该可以工作。 -
std::pair不采用比较运算符。它们已经根据对的组件进行了定义。 -
我不能使用字符串,因为我得到的所有数据都是 char *,我不能确定 char * 不会包含任何会中断字符串比较的 '0' - 如果我会将 char * 转换为字符串
-
在这种情况下,使用
std::vector<unsigned char>怎么样?您可以比较向量是否相等,小于和大于(它按字典顺序比较其元素,就像字符串一样),并且不会关心中间有'\0'。
标签: c++ dictionary keyvaluepair