我正在尝试比较以下元素:
std::vector<std::array<uint8_t, 6> > _targets =
{
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x11 }
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x22 }
};
到传统数组:
uint8_t _traditional[6] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x33 }
为:
for (auto target : _targets)
{
if (! memcmp(target, _traditional, 6)) {
known = 1;
}
}
并且正在接收数据转换错误:
error: cannot convert 'std::array<unsigned char, 6u>' to 'const void*' for argument '1' to 'int memcmp(const
void*, const void*, size_t)
我可以执行哪些propert字节明智的比较操作来完成相等性评估?
答案 0 :(得分:8)
您可以使用data()
的{{1}}成员来获取指向所包含数组的指针:
array
在这种情况下(存储if (! memcmp(target.data(), _traditional, 6))
),可以使用&target[0]
替代方法,但是如果存储的类重载一元uint8_t
(地址)运算符。但是您可以使用&
,即使存在重载的地址运算符,它也可以正常工作。