【问题标题】:Access auto declared array访问自动声明的数组
【发布时间】:2017-02-20 01:57:19
【问题描述】:
auto messwerte2 = { 3.5, 7.3, 4.9, 8.3, 4.4, 5.3, 3.8, 7.5 };

有哪些可能性可以显式访问这个类似数组的结构的单个值,据我所知,它实际上是一个 std::initializer_list ?

【问题讨论】:

  • 我不知道你的循环是什么样子的,你也没有展示它,但是如果你阅读“数组”,你很可能会偶然发现正确的@987654322 @ 语法...和“循环”意味着您迭代单个元素(这意味着它演示了如何访问单个元素...)
  • 为什么我的问题是-4?我遇到了一个问题,这可能来自对具有不同 C++ 语言结构的数组的误解和混淆。我怎样才能将这个问题解决为“更好”?我的意思是,我收到的答案直接集中在澄清我的误解,如果其他人有同样的问题,这个帖子应该帮助他,因为它帮助了我。

标签: c++ arrays initializer-list auto


【解决方案1】:

存在哪些显式访问此数组的单个值的可能性?

它不是一个数组,而是推导出为一个std::initializer_list<double>,可以通过迭代器或基于范围的循环访问:

#include <iostream>

auto messwerte2 = { 3.5, 7.3, 4.9, 8.3, 4.4, 5.3, 3.8, 7.5 };

int main() {

    for(auto x : messwerte2) {
        std::cout << x << std::endl;
    }
}

Live Demo

要使其成为数组,请使用显式数组声明:

double messwerte2[] = { 3.5, 7.3, 4.9, 8.3, 4.4, 5.3, 3.8, 7.5 };

【讨论】:

  • OP 知道他们可以使用基于范围的 for 循环。他们想知道如何从特定位置获取单个值。
  • @NathanOliver 是的,我刚刚注意到了。
  • 似乎是因为 initializer_list 不能像数组一样使用,所以似乎不可能。谢谢。
  • @baxbear 是的。我另外添加了一个参考链接。
【解决方案2】:
auto messwerte2 = { 3.5, 7.3, 4.9, 8.3, 4.4, 5.3, 3.8, 7.5 };

不声明数组。它声明了一个std::initializer_list&lt;double&gt;

要声明一个数组,请使用:

double messwerte2[] = { 3.5, 7.3, 4.9, 8.3, 4.4, 5.3, 3.8, 7.5 };

然后你可以使用常规的数组索引语法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-22
    • 2012-08-06
    • 2020-02-10
    • 1970-01-01
    • 2023-02-09
    • 1970-01-01
    相关资源
    最近更新 更多