这个问题是关于c++的。如何创建一个数组,第一行是字符串,第二行是双精度?我认为它应该是无效的,但它不起作用。还有别的办法吗?欢呼声
数组中不能有不同的类型。如果你需要两种不同的类型有几种方法可以做到
- 您可以使用
std::pair
:std::pair<std::string, double>
-
您可以使用
struct
或class
将不同的类型包装在一起,如:struct some_name { std::string string_name; double double_name; };
-
您可以使用
std::map
或std::unordered_map
- 您可以使用两个单独的数组一个用于
std::sting
部分,一个用于double
部分 - c++ 11及以上版本也有
std::tuple
,它类似于std::pair
,但可以用于2种以上的类型。
我还建议使用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
。
您可以使用:
示例代码:使用Pairvector <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;