将std :: array与传统数组进行比较C ++

时间:2018-08-09 23:21:50

标签: c++ arrays c++11

我正在尝试比较以下元素:

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字节明智的比较操作来完成相等性评估?

1 个答案:

答案 0 :(得分:8)

您可以使用data()的{​​{1}}成员来获取指向所包含数组的指针:

array

在这种情况下(存储if (! memcmp(target.data(), _traditional, 6)) ),可以使用&target[0]替代方法,但是如果存储的类重载一元uint8_t(地址)运算符。但是您可以使用&,即使存在重载的地址运算符,它也可以正常工作。