簡體   English   中英

在數組,向量或中存儲不同的std :: tuple類型?

[英]Storing different std::tuple types in an array, vector or?

最新的C ++版本(我猜是17還是20)是否可以在std :: array或std :: vector或其他內置數據類型中存儲不同類型的元組? 例如,也許->

struct bunchOfTuples {
    std::tuple<float, float, int, int> firstTup = std::make_tuple(float, float, int, int);
    std::tuple<float, float, int> secondTup = std::make_tuple(float, float, int); };
    // bunch more tuples of differing types
};

有什么方法可以使用模板來實現類似的目的? 還是類或結構實現? 還是我沒想到我是最新C ++的新手? 我正在研究一個自動方法調用項目。 我有一些基本可行的方法,但這會使它更清潔。

數組,向量以及實際上所有標准容器都是同質的。 這意味着容器的所有元素都具有相同的類型。 std::tuple模板的不同實例是不同的類。 因此,它們不能存儲在一個陣列中。

C ++確實具有異構包裝器: std::variantstd::any Variant是帶標簽的聯合的實現。 它可用於存儲預定義類型列表中的對象。 anyvoid*的類型安全包裝器。 它可以存儲任何類型的對象。 因此,一個變體或any容器可能對您有用。

不過,它們只是底層工具,對於更具特色的異構處理,現有的庫如Boost.Hana。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM