0
作爲標題是相當說明性的,如何迭代boost::variant<std::vector<int>, std::vector<string>>
變量的最佳方法?如何迭代boost :: variant <std :: vector <int>,std :: vector <String>>?
說,我有一個結構:
struct foobar{
enum typeOfVariant {intVariant, StringVariant}
boost::variant<std::vector<int>, std::vector<String>> variable;
}
,我接受在某一點與保證該枚舉corelated從變異類型。
爲了實現也許是這樣的:
boost::variant<std::vector<int>, std::vector<string>> var;
for (auto t in var)
{
//do something
}
^這可能是理想的方式。
或者強制轉換爲std::vector<int>
或std::vector<string>
,基於枚舉類型?
'std :: visit'有什麼問題? – Yakk
@Yakk它沒有提升?根據文檔,Boost的版本(名爲'apply_visitor')還需要'result_type' typedef,除非你是C++ 14。 –
** - 1 **呈現的代碼是**而不是真實代碼**,例如缺少分號。另外「枚舉與變體類型相關聯」。是沒有意義的:一個類型不能與動態值相關聯。除了所有誤導性的東西,問題只是如何訪問'boost :: variant',**文檔**顯示了這一點。 –