【发布时间】:2020-07-09 08:56:47
【问题描述】:
我想要一种方法来构建一个具有可变编号的元组或基于对象在成员变量容器(例如向量)中具有多少条目的条目。
这是我最好的结果。但是,不工作。我显然在返回值构造中遗漏了一些东西。假设m_values 是一个容器,其中包含我想放入元组并返回的值。
template<typename... T>
std::tuple<T...> getValuesTuple()
{
if (m_values[0].isValid())
{
return buildReturnTuple(0);
}
return std::tuple<T...>();
}
template<typename... T>
std::tuple<T...> buildReturnTuple(size_t i)
{
if (i + 1 < MAX_VALUES && m_values[i + 1].isValid())
{
return std::tuple<T, T...>(m_values[i], buildReturnTuple(i + 1));
}
return std::tuple<T...>(m_values[i]...);
}
提前谢谢你!
【问题讨论】:
-
您必须在编译时知道向量中的元素数量。否则不可能做你想做的事
-
可以看看
std::make_tuple吗?创建包含预期值的向量 v 然后使用std::make_tuple(v.size(), begin(v), end(v));创建元组 -
@bartop 谢谢你的回答。我可以在编译时拥有一个具有(如代码中已经指出的)MAX_VALUES 常量数组大小的数组。
标签: c++ templates tuples variadic