如何查找 2d 标准::数组中的列数



我有这个函数,它检查 2d std::string 数组中的所有行是否相等:

template <int sizeElements, int sizeArrays>
bool CheckEquality2dArray(const array<array<string, sizeElements>, sizeArrays> &my2dArray)
{
if (equal(my2dArray.begin() + 1, my2dArray.end(), my2dArray.begin()))
{
return true;
}
else
{
return false;
}
}

我正在使用模板,以便我可以传递列数(每行/数组的元素(和行数(std::arrays(。然后,我可以在任何 2d std::array 上使用该函数。

我的问题是:如何传递每行的元素数?

2d std::array "myFirst2dArray" 上的示例:

if (checkArray.CheckEquality2dArray</*INSERT SOMETHING HERE*/, (int)myFirst2dArray.size()>(myFirst2dArray) == true)
{
//Do something      
}

我不能做像(int)myFirst2dArray[0].size()这样的事情.我知道我可以通过使用向量来解决这个问题,但是有没有办法使用数组?

这些是你的模板参数;你不传递它们,因为它们是类型的一部分。
您只需要将数组传递给函数,因为编译器已经知道维度。
喜欢这个:

CheckEquality2dArray(myFirst2dArray);

我已将模板参数更改为:

template <size_t sizeElements, size_t sizeArrays>

然后,当我使用该函数时,我删除了模板参数(感谢 molbdnilo(,现在一切都在工作:)

最新更新