我最近學會了如何使用std :: tuple(我在此之前從未需要它),並且很好奇它是何時在容器上使用它的恰當時機?我只問,因爲std :: tuple感覺不像一個容器,因爲它需要諸如std :: get和std :: make_tuple之類的東西。正確使用std :: tuple?
2
A
回答
8
std::tuple
s包含固定數量的不同類型的元素。當你想將不同類型的幾個對象組合在一起時,可以使用它。當分組沒有任何特別有用的語義時,我會在struct
上使用它。例如,當函數需要返回多個對象時,std::tuple
很有用。另一方面,容器包含多個相同類型的元素(可能數量不等)。
8
它比一個容器更像是一個結構的替代品。但是,在大多數情況下,出於可讀性的原因,最好定義一個結構體。元組最適用於具有可變數量參數的模板。
相關問題
- 1. Be-friend'ing std :: tuple
- 2. 複製std :: tuple
- 3. 正確使用std :: shared_ptr和std :: auto_ptr
- 4. 正確使用std :: result_of_t
- 5. 正確使用std :: atomic
- 6. 使用std :: tuple作爲std :: unordered_map的密鑰
- 7. 將移動語義與std :: pair或std :: tuple一起使用
- 8. 從std :: tuple <some_types ...>
- 9. 正確使用MPI和std :: string
- 10. C++正確使用std :: set對象
- 11. C++ 11 std :: atomic_flag,我正確使用它?
- 12. 如何使用std :: istream的正確
- 13. 如何確保std :: tuple使用C++ 11在以下代碼中移動語義
- 14. 一個std :: shared_ptr <>的std :: tuple <>不起作用?
- 15. const使用std :: unique_ptr/std :: shared_ptr正確組合
- 16. 爲什麼`std :: pair`將`std :: tuple`作爲ctor參數類型而不是`const std :: tuple&`?
- 17. 是std :: tuple需要使用空基類優化嗎?
- 18. 我可以使用openmp遍歷C++ 11 std :: tuple嗎?
- 19. 爲什麼使用std :: tuple實現的遞歸繼承不好?
- 20. 如何使用可變參數模板聲明std :: tuple?
- 21. 如何使用std :: tuple中的值作爲函數參數?
- 22. 由std :: tuple存儲的垃圾值
- 23. 將std :: tuple <T...>轉換爲T
- 24. std :: tuple是如何實現的?
- 25. 如何創建std :: tuple的別名?
- 26. C++ std :: tuple的銷燬順序
- 27. 將變量數組轉換爲std :: tuple
- 28. 通過使用std :: get,std :: tuple_size,std :: tuple_element
- 29. 線程安全從雙std :: tuple的std :: vector中讀取?
- 30. 強制std :: tuple包含std :: pair <fixed_type,T>
當您需要的值超過[一對](http://en.cppreference.com/w/cpp/utility/pair)值時,我認爲。您還可以將['std :: tuple'](http://en.cppreference.com/w/cpp/utility/tuple)作爲一種匿名結構。 –
是的,謝謝。我實際上忘記了std :: pair,所以我應該改變它,因爲它只有兩個對象 – DTSCode
相關:我更經常使用的元組之一,[使用'std :: tie'的字典學比較邏輯](http:// en.cppreference.com/w/cpp/utility/tuple/tie)。特別注意鏈接文檔中的示例。 – WhozCraig