如何在一个二维的std::数组中查找列数。

问题描述 投票:0回答:1

我有一个函数,用来检查一个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::数组 "myFirst2dArray "上。

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

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

c++ arrays multidimensional-array
1个回答
0
投票

这些是你的模板参数;你不需要传递它们,因为它们是类型的一部分。你只需要将数组传递给函数,因为编译器已经知道了尺寸。就像这样。

CheckEquality2dArray(myFirst2dArray);

0
投票

我把模板参数改为:

template <size_t sizeElements, size_t sizeArrays>

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

© www.soinside.com 2019 - 2024. All rights reserved.