【问题标题】:Trying to get an array.length to work in for loop试图让 array.length 在 for 循环中工作
【发布时间】:2013-10-19 12:20:34
【问题描述】:

谁能帮我弄清楚为什么这不起作用。

int main() {
int A[100];

    for(int i=0; i<A.length; i++)
    {

    }

    return 0;
}

这是我的错误

[Error] request for member 'length' in 'A', which is of non-class type 'int [100]'

【问题讨论】:

  • length 是 Java 的东西 - 你想要 sizeof
  • 数组在 C++ 中没有成员。
  • @sje397 sizeof 不会给出数组中元素的数量。
  • 使用 std::array 代替 C 风格的数组。

标签: c++ arrays loops


【解决方案1】:

对于 C 样式数组,没有像 length 属性这样的东西。考虑使用std::array,它是size() 成员,或者sizeof(A)/sizeof(int),如果您坚持使用C 样式数组。

【讨论】:

  • 作业的要求明确指出不要使用向量,所以我坚持这样做。
  • 这是一个数组,不是一个向量; )
  • 我知道我只是在陈述,因为您说如果您坚持使用 C 样式数组。顺便说一句,谢谢。
【解决方案2】:

普通数组没有任何成员。如果你需要知道它们的长度,你要么必须跟踪它,要么你可以编写一个简单的函数模板来获取它:

template<class T, size_t N>
constexpr size_t size(const T (&)[N]) { return N; }

然后

int A[100];
....
for(int i=0; i < size(A); i++) { ... }

使用std::array&lt;int, 100&gt; 会容易得多。这有一个 size 方法。

【讨论】:

    猜你喜欢
    • 2023-03-10
    • 1970-01-01
    • 2020-01-30
    • 1970-01-01
    • 2018-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多