2
這應該是顯而易見的,是否有一些簡短的語法來獲取子傀儡?從元組中提取多個類型
類似的東西:
std::tuple<std::string, double, int> myTuple;
std::tuple<std::string, int> subTuple = std::get<std::string, int>(myTuple);
這應該是顯而易見的,是否有一些簡短的語法來獲取子傀儡?從元組中提取多個類型
類似的東西:
std::tuple<std::string, double, int> myTuple;
std::tuple<std::string, int> subTuple = std::get<std::string, int>(myTuple);
你需要讓自己的模板功能,這在下面的實施需要C++ 14(因爲它需要std::get<T>
,可以實現在C++ 11自己):
template<typename... R, typename ...Args>
std::tuple<R...> sub_tuple(const std::tuple<Args...>& original) {
return std::make_tuple(std::get<R>(original)...);
}
int main()
{
std::tuple<std::string, double, int> myTuple = std::make_tuple("Hello", 1201.0, 51);
std::tuple<std::string, int> subTuple = sub_tuple<std::string, int>(myTuple);
std::cout << std::get<0>(subTuple) << " " << std::get<1>(subTuple);
}
注:這將在原來的元組爲每個元素的副本
您可以使用std::tie
(reference):
std::tuple<std::string, double, int> myTuple = ...;
std::string a;
int b;
std::tie(a, std::ignore, b) = myTuple;
'的std ::元組<的std :: string,int>的子元組{的std ::得到<0>(myTuple)的std ::得到<2>(myTuple)}; '? – CompuChip
兩個得到什麼錯誤?我敢肯定,你可以用一些metatemplate欺騙來使它更通用,但這是否值得? – rubenvb
@rubenvb,我以爲std庫有。 – Velkan