C++中std::pair
的C等價物是什麼?我試圖在網上找到相應的內容,但找不到任何內容,只能解釋它的功能。C中std :: pair的等效形式
2
A
回答
13
沒有一個。 std::pair
是一個模板,C沒有任何類似於模板的東西。
對於給定的模板專業化,您可以定義一個或多或少等價的結構;讓std::pair<int, double>
類似於
struct pair_int_double {
int first;
double second;
};
但你選擇了錯誤的語言,如果你想有一個通用模板。
1
std::pair
在C++:
templte <class t1, class t2>
struct pair {
t1 first;
t2 second;
}
std::pair
利用的模板,所以每個具體實例定義了一類新std::pair<myT1, myT2>
。
有C中沒有這樣的事情,你可以每次都申報了不同的結構,或者用void * ...
struct pair {
struct myT1 first;
struct myT2 second;
}
1
而其他的答案是正確地說,C沒有模板,假設你不能有一個通用的對類型是錯誤的。如果您確實需要泛型類型,也就是說,您不想爲每對要爲其配對的每對類型手動定義struct
,則只剩下3個選項。首先,您可以使用包含兩個void*
類型的結構,並將這些指針用作數據的通用存儲指針。 (這是不必要的複雜,我一般不會推薦它)
其次,如果類型爲你對結構的量預先知道,你可以用你的結構一個union
,例如
struct pair
{
union
{
int first_int;
float first_float;
};
union
{
int second_int;
float second_float;
}
}
或者,第三,您可以使用參數宏來生成您需要的類型的結構定義,而無需不斷重複自己。
或者,也可以考慮一種編寫不依賴模板類型的代碼的方法。
+0
我在這裏沒有看到任何通用的東西 –
相關問題
- 1. C/C++中numpy.nan_to_num的等效形式
- 2. 在C++中繼承std :: pair和std :: map
- 3. php有C++的std :: pair嗎?
- 4. C++ std :: pair的C#模擬是什麼?
- 5. 如何在另一個std :: pair中插入一對std :: pair?
- 6. Oracle等效的oracle形式
- 7. 無效轉換爲C++中的非const引用0x ... std :: pair中的錯誤?
- 8. C++無法在std :: pair中將lambda轉換爲std :: packaged_task
- 9. C++ const正確性與std :: pair
- 10. C++ STL map,std :: pair作爲密鑰
- 11. 角度中的{{#with}}的等效形式
- 12. std :: set :: equal_range std :: pair的容器
- 13. Haskell「until」在Python中的等效形式
- 14. std :: strtoul等效於C++標準庫嗎?
- 15. qt linux「QMAKE_CXXFLAGS + = -std = C++ 11」等效於windows?
- 16. 開箱std :: pair <T,std :: pair <U,std :: pair <...> >>到元組<T,U,...>
- 17. 在C++中的std :: pair數組的問題?
- 18. 放置一個std :: pair
- 19. 初始化列表std :: pair
- 20. 即使V(U)有效,std :: pair <T, U>轉換爲std :: pair <T, V>也不起作用?
- 21. 如何在Objective-C中返回類似於std :: pair的對象?
- 22. 模板類中聲明std :: pair的C++錯誤
- 23. 由於std :: pair在GCC(MoSync)中的C++構建錯誤
- 24. 綁定const std :: pair <T, U>&std :: pair的值<const T, U>
- 25. Qt中的等效std :: deque是什麼?
- 26. C++中maya.cmds的等價形式
- 27. Std :: multimap等效於delphi
- 28. 繼承std :: istream或等效
- 29. 我可以使用std :: pair作爲std :: multimap中的鍵嗎?
- 30. 使用std :: pair作爲std :: unordered_map中的鍵
你不能有等價物,因爲C沒有模板。你可以用2個成員手動創建一個結構體,但這是你最接近的。 – Borgleader