相关疑难解决方法(0)

优化分配的模板技巧

我有:

struct DoubleVec {
  std::vector<double> data;
};

DoubleVec operator+(const DoubleVec& lhs, const DoubleVec& rhs) {
  DoubleVec ans(lhs.size());
  for(int i = 0; i < lhs.size(); ++i) {
    ans[i] = lhs[i]] + rhs[i]; // assume lhs.size() == rhs.size()
  }
  return ans;
}

DoubleVec someFunc(DoubleVec a, DoubleVec b, DoubleVec c, DoubleVec d) {
  DoubleVec ans = a + b + c + d;
}
Run Code Online (Sandbox Code Playgroud)

现在,在上面,"a + b + c + d"将导致3个临时DoubleVec的创建 - 是否有一种方法可以通过某种类型的模板魔术来优化它...即将其优化为某种东西相当于:

DoubleVec ans(a.size());
for(int i = 0; i < ans.size(); i++) …
Run Code Online (Sandbox Code Playgroud)

c++

11
推荐指数
1
解决办法
1229
查看次数

标签 统计

c++ ×1