Mik*_*our 15
没有一个.std::pair是一个模板,C没有任何类似于模板的东西.
对于模板的给定特化,您可以定义一个或多或少等效的结构; 所以这std::pair<int, double>是类似的
struct pair_int_double {
int first;
double second;
};
Run Code Online (Sandbox Code Playgroud)
但如果你想要一个通用模板,你就选择了错误的语言.
虽然其他答案说 C 没有模板是正确的,但不能拥有通用对类型的假设是错误的。如果您确实需要一个泛型类型,也就是说,您不想struct为每对想要使用的类型手动定义 a,那么您还有 3 个选项。
首先,您可以使用包含两种类型的结构void*,并将这些指针用作数据的通用存储指针。(这不必要地复杂,我一般不会推荐它)
其次,如果预先知道对结构的类型数量,则可以union在结构中使用 a ,例如
struct pair
{
union
{
int first_int;
float first_float;
};
union
{
int second_int;
float second_float;
}
}
Run Code Online (Sandbox Code Playgroud)
第三,您可以使用参数宏来生成所需类型的结构定义,而无需不断重复自己。
或者,考虑一种编写不依赖模板化类型的代码的方法。
| 归档时间: |
|
| 查看次数: |
5781 次 |
| 最近记录: |