【问题标题】:Having troubles with inputing std::array [duplicate]输入 std::array 时遇到问题 [重复]
【发布时间】:2020-07-09 06:43:38
【问题描述】:

我在使用 std::array 时遇到了一些麻烦。

我有一个名为 b 的数组,让我们这样声明它:array<int,2>b[3];

也许我会这样输入:

for(int i = 0; i<3; i++){
    int a; cin >> a;
    b[i] = {a,i};
}

当我这样做时,我得到一个错误:

ar.cpp:30:8: error: expected expression
                b[i]={a, i};

还可以说我想输入一个向量>,让我们将其定义为vector&lt;array&lt;int, 2&gt;&gt; ans;

我可能会这样做:

int a = 10, b = 20;
ans.push_back({a,b});

我收到另一个错误说明:

 error: expected expression
  ans.push_back({a, j});

注意我将它们作为单独的案例和单独的变量来放置

我尝试使用 make_pair 之类的方法,但没有奏效。

这些错误可能是因为我使用的是 c++17 而不是 11。但是我尝试了很长时间,我无法修复它。为了帮助我解决这个问题,请到这里:Visual Studio Code c++11 extension warning and lamda warnings

谁能建议我应该做些什么来代替这个?谢谢。

注意 可能类似于 make_pair 但对于 vector> 的方法是我在寻找什么?当我输入对向量时,我总是使用 push_back 和 make_pair 而不是 {} 或 emplace_back,因为这些方法不起作用,因为我总是收到类似的错误。

【问题讨论】:

  • @d4rk4ng31 当人们输入大多数人做的配对向量时:a.push_back({b,c}) 但我有这个问题有一段时间了,而不是 {} 我总是不得不写“make_pair”,因为我收到了那个错误。你知道在这种情况下我该如何替换这个 make_pair 吗?
  • 为什么我会收到反对票?
  • 嗯,对我来说效果很好
  • 我不知道b[i] = {a,i}; 应该做什么。它没有降神会。 IMO 它应该只是b[i] = a;
  • 我猜这和stackoverflow.com/questions/62812376/…是同一个问题?

标签: c++ arrays input compiler-errors


【解决方案1】:

在 std::array 中,第一个模板参数指定数组的类型。如果你想将一个整数映射到另一个,你可能需要使用 std::map:

std::map<int, int> a;
a[3] = 10;

std::cout << a[3] << std::endl;

【讨论】:

    猜你喜欢
    • 2021-04-28
    • 1970-01-01
    • 2017-11-20
    • 2019-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多