【发布时间】:2019-02-14 09:24:57
【问题描述】:
我希望有一个函数获取对容器的多个引用并返回所有容器的元素组合。由于此操作是在一个非常热的循环中执行的,我希望能够静态展开尽可能多的操作,而无需编写 5 个基本相同的函数实例。
我正在执行的算法基本上表现为
const auto result = s0 + a1 * s1 + a2 * s2 + ...
所有si 都是包含所有相同数量元素的容器。要求和的元素数量在编译时是已知的。
我正在寻找的函数应该表现为:(假设)
inline Container sum(const Container& s0, double a1, const Container& s2, ....){
auto result = Container(s0);
for (int i = 0; i < result.size(); ++i)
result[i] += a1 * s1[i] + a2 * s2[i] + ...;
return result;
}
出于性能原因,不希望编写带有运行时边界检查的内部循环。此外,在尝试使用运行时边界时,我遇到了无法轻松地将可变数量的引用传递给函数的问题,在这种情况下我应该只求助于指针吗?
所有代码都必须是有效的 C++11,我无法在这个项目中使用更现代的编译器。
【问题讨论】:
标签: c++ c++11 containers variadic-templates