【发布时间】:2023-03-27 12:27:01
【问题描述】:
我必须根据编译时间常数参数编写相同的代码,例如:
map["text 0"] = vec[0];
map["text 1"] = vec[1];
...
map["text n"] = vec[n];
问题是我在编写代码时不知道n,我将它作为模板参数接收。显而易见的解决方案是使用一个循环并在循环内生成"text k" 并使用vec[k],但是当它应该在编译时完成时,这会产生运行时开销。另一种解决方案是将函数专门用于不同的N 值,但这样我将不得不多次手动编写相同的代码,并且没有理由将其设为模板。
我知道有一些智能宏可以重复类似的事情 N 次(例如 BOOST_PP_REPEAT 宏系列),但我找不到针对我的特定问题的解决方案。
你有解决这个问题的办法吗?
【问题讨论】:
-
@jrok 是的,但不是所有功能(VS2010 和最新的 Xcode)
-
模板和循环可能会被编译器优化。
-
什么是
vec,什么是map? (为了清楚起见)您能否写一个您打算使用的函数的示例,以便我们在反思中有一个起点;因为目前,恐怕还不是很清楚:x
标签: c++ c-preprocessor