C++에서 C에 해당하는 std::pair
은 무엇입니까? 나는 웹상에서 동등한 것을 찾으려고 노력하고 있으며 무엇을하는지에 대한 설명을 찾을 수는 없다.C에서 std :: pair와 동등 함
답변
하나도 존재하지 않습니다. std::pair
은 템플릿이고 C는 템플릿과 비슷한 것이 없습니다.
주어진 템플릿의 전문화를 위해, 당신은 어느 정도 일치하는 구조를 정의 할 수 있습니다; 그래서 std::pair<int, double>
는
struct pair_int_double {
int first;
double second;
};
과 유사하지만 고유의 템플릿을 원하는 경우 잘못된 언어를 선택했습니다. C++에서
std::pair
:
templte <class t1, class t2>
struct pair {
t1 first;
t2 second;
}
std::pair
템플릿을 활용하여, 각각의 구체적인 인스턴스는 새로운 클래스 std::pair<myT1, myT2>
을 정의합니다.
C에서 그런 일이 없다, 당신은 다른 구조체 각 시간을 선언 할 수 있습니다, 또는 C 템플릿이없는 것을 말하는 다른 답변이 정확하지만 ... *
struct pair {
struct myT1 first;
struct myT2 second;
}
을 무효 사용 일반 쌍 유형을 가질 수 없다는 가정은 잘못되었습니다. 일반 유형이 정말로 필요한 경우 즉, 쌍을 사용할 유형 쌍마다 struct
을 수동으로 정의하지 않으려면 3 가지 옵션이 있습니다.
먼저 두 개의 void*
유형을 포함하는 구조체를 사용할 수 있으며이 포인터를 데이터의 일반 저장 포인터로 사용할 수 있습니다. (이 불필요하게 복잡하고 나는 일반적으로 그것을 권하고 싶지 않다) 예를
struct pair
{
union
{
int first_int;
float first_float;
};
union
{
int second_int;
float second_float;
}
}
를 들어, 페어 구조 유형의 양이 사전에 알려진 경우
둘째, 당신은 당신의 구조체에 union
을 사용할 수 있습니다 또는 세 번째로 파라 메트릭 매크로를 사용하여 지속적으로 반복하지 않고도 필요한 유형의 구조체 정의를 생성 할 수 있습니다.
아니면 템플릿 기반 유형에 의존하지 않는 코드를 작성하는 방법을 생각해보십시오.
여기에 일반적인 내용이 표시되지 않습니다. –
C에는 템플릿이 없으므로 해당 항목이 없습니다. 2 명의 멤버가있는 구조체를 수동으로 만들 수는 있지만, 가장 가까운 곳입니다. – Borgleader