C++ 检查输入std::数组指针数据是否等于某个常量数组

C++ 检查输入std::数组指针数据是否等于某个常量数组,c++,C++,我有一个函数跟踪,可以简化为: void foo(const std::array<unsigned long long int, 3>& in) 因为: 错误:'operator==”不匹配(操作数类型为“std::array中的指的是std::array,std::array{1,1,1}也是std::array,因此您可以通过=/code>直接比较它们: if(in == std::array<unsigned long long int, 3>{1,1,

我有一个函数跟踪,可以简化为:

void foo(const std::array<unsigned long long int, 3>& in)
因为:


错误:
'operator==”
不匹配(操作数类型为“
std::array
中的
指的是
std::array
std::array{1,1,1}
也是
std::array
,因此您可以通过
=/code>直接比较它们:

if(in == std::array<unsigned long long int, 3>{1,1,1})
如果只有三个元素,我可能会简单地写

if (in[0] == 1 && in[1] == 1 && in[2] == 1)

中的
指的是
std::array
std::array{1,1,1}
也是
std::array
,因此您可以通过
=
直接比较它们:

if(in == std::array<unsigned long long int, 3>{1,1,1})
如果只有三个元素,我可能会简单地写

if (in[0] == 1 && in[1] == 1 && in[2] == 1)

删除
data()
调用,它返回指向底层存储的指针,但您希望比较两个数组的实际内容
@Yksisarvinen对,duh.我更习惯C,所以我在输入中看到了
&
,我认为
中的
是某种类型的指针。啊。我的错误是,
&
有点用得太多了。它继承了C的所有含义,并额外表示一个引用(如果在声明变量时使用)。然后还有
&&
…删除
data()
调用,它返回指向底层存储的指针,但您希望比较两个数组的实际内容。它应该是
if(in==std::array{1,1,1})
@Yksisarvinen对,duh.我更习惯C,所以我在输入中看到了
&
,我认为
中的
是某种类型的指针。啊。我的错误是,
&
有点用得太多了。它继承了C的所有含义,并额外表示一个引用(如果在声明变量时使用)还有
&
..其他类型较少的版本包括
in==decltype(in){1,1,1}
in==std::array{1ull,1ull,1ull}
@M.M Imho[0]==1&&in[1]==1&&in[2]中可读性最强的==1
。无需创建第二个array@idclev463035818实际上,你的评论是对的。其他类型较少的版本包括
in==decltype(in){1,1,1}
in==std::array{1ull,1ull,1ull}
@M.Imho[0]==1&&in[1]==1&&in[2]==1
。无需创建第二个array@idclev463035818事实上,你的评论是对的。