输入std::数组时出现问题

Having troubles with inputing std::array

本文关键字:问题 数组 std 输入      更新时间:2023-10-16

我在使用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};

还假设我想要输入一个向量<数组<gt>,让我们将其定义为vector<array<int, 2>> 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代码c++11扩展警告和lamda警告

有人能建议我该怎么做而不是这个吗?非常感谢。

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

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

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