C语言中std::pair的等价形式 > C的等价于 STD::从C++中配对< /代码>?我试图在网络上找到类似的东西,除了解释它的功能外,什么也找不到。
没有C语言中std::pair的等价形式 > C的等价于 STD::从C++中配对< /代码>?我试图在网络上找到类似的东西,除了解释它的功能外,什么也找不到。,c++,c,std-pair,C++,C,Std Pair,没有std::pair是一个模板,C没有任何类似于模板的东西 对于给定的模板专业化,您可以定义或多或少等效的结构;因此,std::pair与 struct pair_int_double { int first; double second; }; 但是如果您想要一个通用模板,您选择了错误的语言。std::pair在C++: template <class t1, class t2> struct pair { t1 first; t2 second; }
std::pair
是一个模板,C没有任何类似于模板的东西
对于给定的模板专业化,您可以定义或多或少等效的结构;因此,std::pair
与
struct pair_int_double {
int first;
double second;
};
但是如果您想要一个通用模板,您选择了错误的语言。
std::pair
在C++:
template <class t1, class t2>
struct pair {
t1 first;
t2 second;
}
虽然其他答案说C没有模板是正确的,但不能有泛型对类型的假设是错误的。如果您确实需要泛型类型,也就是说,您不想为每对要使用一对的类型手动定义一个
struct
,那么您只剩下3个选项
首先,您可以使用包含两个void*
类型的结构,并将这些指针用作数据的通用存储指针。(这是不必要的复杂,我一般不建议这样做)
其次,如果事先知道pair结构的类型数量,那么可以在结构中使用联合
struct pair
{
union
{
int first_int;
float first_float;
};
union
{
int second_int;
float second_float;
}
}
第三,可以使用参数化宏生成所需类型的结构定义,而无需不断重复
或者,可以考虑编写一个不依赖模板类型的代码的方法。
< P>。其他答案很清楚,C没有任何类似于C++模板的东西。
但是,您可以使用void*
作为存储任何类型变量地址的方法,方法是强制转换到所需数据类型的指针
在此之后,C中成对结构的可能实现如下所示:
struct pair {
void* first;
void* second;
};
你不能有一个等价的,因为C没有模板。您可以手动创建一个包含2个成员的结构,但这是最接近的。我在这里没有看到任何通用的
struct pair {
void* first;
void* second;
};