[英]multi-dimensional array of 2 types cpp
这个问题在c ++上。 我如何制作一个数组,第一行有字符串,第二行有双精度? 我认为它应该是无效的,但不能正常工作。 还有其他办法吗? 干杯
数组中不能有其他类型。 如果您需要两种不同的类型,可以使用多种方法
std::pair
如: std::pair<std::string, double>
您可以使用struct
或class
将不同类型包装在一起,例如:
struct some_name { std::string string_name; double double_name; };
std::sting
部分,另一个用于double
部分 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}};
然后,您可以使用first
和second
访问元素:
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.