【问题标题】:How to find the number of columns in a 2d std::array如何查找 2d std::array 中的列数
【发布时间】:2020-05-12 06:08:08
【问题描述】:

我有这个函数,它检查二维 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 上使用该函数。

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

二维 std::array "myFirst2dArray" 示例:

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

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

【问题讨论】:

  • 顺便说一下,if (condition) return true; else return false; 等价于return condition;
  • @Melebius 我的宠物讨厌。当教授解释这一点时,我仍然记得我的一些同学脸上空白的表情。
  • 我不知道你能做到这一点xD

标签: c++ arrays multidimensional-array


【解决方案1】:

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

CheckEquality2dArray(myFirst2dArray);

【讨论】:

    【解决方案2】:

    我已将模板参数更改为:

    template <size_t sizeElements, size_t sizeArrays>
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多