【发布时间】:2018-07-09 13:26:33
【问题描述】:
如果标题有点误导,我很抱歉。
我有一个循环一些数据的函数。每次迭代时,此数据的类型都会发生变化。
基本上我有这样的东西:
for(int i = 0; i < limit; i++)
{
type object;
object.do_stuff();
}
例如,在第一次迭代中,“type”将为 int,在第二次迭代中,“type”将为 double,等等。
我不能使用可变模板,因为我有 100 多个元素,据我所知,这对系统来说会非常繁重。
我的想法是创建一个“typedef 向量”来循环对象的所有类型。
vector<????> type;
type.push_back(int);
type.push_back(double);
...
for(int i = 0; i < limit; i++)
{
type[i] object;
object.do_stuff();
}
我不知道这是否可能。
我看到了类型列表的基础知识,但我不知道是否可以重现循环。
【问题讨论】:
-
您在寻找
std::tuple吗? -
int::do_stuff将是无效的顺便说一句。 -
你真的尝试过可变参数模板吗? “据我所知,这对系统来说会很费力”编译可能需要更长的时间,但应该没有运行时开销。
-
按照你的逻辑,一个程序永远不应该包含 100 个不同类型的向量。这似乎很不合理
-
@Jarod42 我不知道元组!当然看起来元组是我要找的,谢谢!是的,关于 int::do_stuff 这是我在编写示例时的错误,应该是 int a;一个::do_stuff。 HolyBlackCat & Default 我试过了,但我的经理告诉我,如果我在一个可变模板中超过 20 种类型,系统将变得太慢。尽可能缩短编译时间很重要。
标签: c++ arrays metaprogramming typedef