繁体   English   中英

2种类型cpp的多维数组

[英]multi-dimensional array of 2 types cpp

这个问题在c ++上。 我如何制作一个数组,第一行有字符串,第二行有双精度? 我认为它应该是无效的,但不能正常工作。 还有其他办法吗? 干杯

数组中不能有其他类型。 如果您需要两种不同的类型,可以使用多种方法

  • 您可以使用std::pair如: std::pair<std::string, double>
  • 您可以使用structclass将不同类型包装在一起,例如:

     struct some_name { std::string string_name; double double_name; }; 
  • 您可以使用std::mapstd::unordered_map

  • 您可以使用2个单独的数组,其中一个用于std::sting部分,另一个用于double部分
  • C ++ 11及更高版本也具有std::tuple ,类似于std::pair但可用于两种以上类型。

如果您在编译时知道std::array的大小,我还建议使用std::array如果直到运行时才知道std::array的大小,则建议使用std::vector

您可以使用pair ,但是必须提供此数组的大小。例如:

std::array<std::pair<std::string, double>, 3> dummy{{"string", 1.1}, {"foo", 2.2}, {"bar", 3.3}};

然后,您可以使用firstsecond访问元素:

dummy[0].first  // it is a string (string)
dummy[1].second // it is a double (2.2)

您还可以创建一个struct并具有一个struct数组。

使用std::pair数组或您自己定义的struct / class。 或者,如果您需要搜索,请考虑使用std::map代替。

您可以使用:

示例代码:使用配对

vector <pair <string, double> > test;
test.push_back(make_pair("Age",15.6));
test.push_back(make_pair("Job",5));
cout << test[0].first<<" " << test[0].second;

使用结构:

struct str_test{
string name;
double value;
};
str_test temp;
temp.name = "Some";
temp.value = 1.1;
vector<str_test>test;
test.push_back(temp);
cout << test[0].name <<" "<<test[0].value;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM