C++多维数组多种数据类型

cel*_*eet 3 c++ arrays multidimensional-array

我正在尝试在 C++ 中创建一个多维数组,其中涉及一个字符串和一个 int 。我尝试过int test[1][2] = {{"a", 1}, {"b", 2}, {"c", 3}};,但 g++ 给了我以下内容:

\n\n
example.cpp: In function \xe2\x80\x98int getServer(std::string)\xe2\x80\x99:\nerror: too many initializers for \xe2\x80\x98int [1][2]\xe2\x80\x99\nerror: invalid conversion from \xe2\x80\x98const char*\xe2\x80\x99 to \xe2\x80\x98int\xe2\x80\x99 [-fpermissive]\n
Run Code Online (Sandbox Code Playgroud)\n\n

我也尝试使用char test[1][2]初始化程序,但这不起作用。

\n\n

编辑:这将成为一个相当大的多维数组,并且需要它,以便我可以根据循环控制变量获取值并存储,该变量的长度会有所不同。

\n

chr*_*ris 5

使用std::pair

std::array<std::pair<std::string, int>, 3> test{{"a", 1}, {"b", 2}, {"c", 3}};
Run Code Online (Sandbox Code Playgroud)

std::pair适用于 C++03,但我使用的初始化和数组类型是 C++11。您仍然可以使用普通数组和一堆std::make_pair调用。

现在您可以使用索引和first或访问每个内部元素second

test[0].first //"a"
test[2].second //3
Run Code Online (Sandbox Code Playgroud)


jmh*_*jmh 5

这在 C++ 中是不允许的。数组只能有一种类型,因此指定具有两种类型的数组实际上没有意义。

我的想法是定义一个结构:

struct pair {
    std::string s;
    int i;
}
Run Code Online (Sandbox Code Playgroud)

然后定义一个pair类型的一维数组。然后访问您的元素,例如array[0].s