检查两个二维阵列是否相等
Check if two 2D arrays are equal
如何判断两个2D数组是否与每个元素完全匹配?它们的尺寸相等。
std::equal
似乎不起作用。
我试着写一个简单的函数
bool arrays_equal(int a[][], int b[][])
{
...
}
但是我需要两个数组的最后一个维度来通过二维数组。会使用(sizeof(a[0])/sizeof(*(a[0])))
来完成吗?
也许是这样?
bool arrays_equal(std::array<std::array<int, M>, N> const & lhs,
std::array<std::array<int, M>, N> const & rhs)
{
return lhs == rhs;
}
值M
和N
应该是您的数组维度,或者您可以使它们成为函数模板参数。别忘了#include <array>
。
假设您知道每个数组的确切大小,并且它们在编译时是已知的,那么比较只是具有正确大小的memcmp()
。
// you somehow know the size of the array
int a[WIDTH][HEIGHT];
int b[WIDTH][HEIGHT];
bool const equal(memcmp(a, b, sizeof(int) * WIDTH * HEIGHT) == 0);
// and if defined in the same scope, you can even use:
bool const equal(memcmp(a, b, sizeof(a)) == 0);
请注意,我的代码假设两个数组(a和b)具有相同的大小。您可以先测试一下,通过throw或者像std::assert(sizeof(a)==sizeof(b))这样的断言来确定。
如果您在编译时不知道大小,sizeof
将不起作用,因为它是一个编译时运算符,这意味着您必须传递维度或考虑使用stl
。
相关文章:
- 在提升multi_index容器中,是否定义了"default index"?
- 在C++STL中是否有Polyval(Matlab函数)等价物?
- 检查输入是否不是整数或数字
- 阵列的大小在C++中是否灵活?
- 内存C++复制是否将内存地址复制到另一个阵列
- 检查是否已成功创建新阵列
- VS2017是否有VLA(可变长度阵列)支持解决方法
- 阵列不能两次将相同的名称保存,当要添加新字符串时,程序应检查以查看该名称是否已经存在
- 是否有任何打印2D阵列C 的快捷方式
- 将字符阵列施放到另一种类型中是否违反了严格的确定规则
- 如何检查2D阵列中的字符是否出现多次?C
- 矢量阵列是否形成2D向量
- 我是否必须求助于循环,以比较C 中的两个2D阵列
- 如何在C中获取char阵列的第一个X元素?提升效果是否有改进的方法
- 是否可以在C上实现延迟的(非图案)阵列
- 检查阵列位置在C++中是否为空的 CPU 高效方法
- 我是否应该将 RAII 应用于我分配的所有阵列
- 如何检测变量是否是犰狳阵列
- 检查阵列位置是否为空/空
- 检查两个二维阵列是否相等