2种类型的多维数组



这个问题是关于c++的。如何创建一个数组,第一行是字符串,第二行是双精度?我认为它应该是无效的,但它不起作用。还有别的办法吗?欢呼声

数组中不能有不同的类型。如果你需要两种不同的类型有几种方法可以做到

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

    struct some_name
    {
        std::string string_name;
        double double_name;
    };
    
  • 您可以使用std::mapstd::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}};

您可以使用firstsecond访问元素:

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

你也可以创建一个structstruct的数组..

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

您可以使用:

示例代码:使用Pair
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;

相关内容

  • 没有找到相关文章

最新更新