2种类型的多维数组
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::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;
相关文章:
- 声明C++具有动态大小的数组类型在 Linux 中工作正常,但不能在 Windows 中工作
- 数组类型 int[n][n] 不可赋值,因为表达式必须具有常量值
- 取消引用结束指针到数组类型的一个
- 结构化绑定初始值设定项表单 { 赋值表达式 } 对于 clang 上的数组类型失败
- 如何在数组类型的模板代码中计算std::size_t
- LLVM 无法将数组类型强制转换为常量数组
- 推荐的方法在不初始化值的情况下使数组类型为 std::unique_ptr?
- 特征:从数组类型中获取标量类型是否记录?
- T D[N] 总是声明数组类型的对象吗?
- 如何在模板中推断数组类型?
- 尝试使用 Array 类的模板构造整数数组时,错误:为什么数组类型"int [5]"不可分配,
- 如何将二维数组类型字符(字符串)作为函数参数传递?
- 如何为所有非数组类型专门化模板?
- 数组类型 (C++) 的初始化
- 我预测char数组类型值只能投射指针类型
- 将数组类型更改为 Int16 会节省存储空间吗?
- 采用通用数组类型的函数
- 数组类型 'int [8]'不可分配
- 数组类型 'float [size]'不可分配
- C++。候选模板被忽略 - 无法将数组类型与自身匹配