cel*_*eet 3 c++ arrays multidimensional-array
我正在尝试在 C++ 中创建一个多维数组,其中涉及一个字符串和一个 int 。我尝试过int test[1][2] = {{"a", 1}, {"b", 2}, {"c", 3}};,但 g++ 给了我以下内容:
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]\nRun Code Online (Sandbox Code Playgroud)\n\n我也尝试使用char test[1][2]初始化程序,但这不起作用。
编辑:这将成为一个相当大的多维数组,并且需要它,以便我可以根据循环控制变量获取值并存储,该变量的长度会有所不同。
\n使用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)
这在 C++ 中是不允许的。数组只能有一种类型,因此指定具有两种类型的数组实际上没有意义。
我的想法是定义一个结构:
struct pair {
std::string s;
int i;
}
Run Code Online (Sandbox Code Playgroud)
然后定义一个pair类型的一维数组。然后访问您的元素,例如array[0].s