B
假设我有一个已经定义并在 C++ 代码中某处使用的数组。现在,假设我有另一个A
已定义和初始化的数组。我想创建一个f
转换的函数A
(例如,FFT),并且我希望将转换的结果分配给B
(当然,在 的转换之后A
,B
将更改其值)。我想通过保持语法来做到这一切
B=f(A);
即,不将 的地址B
作为参数传递给f
。可能吗:
- 没有创造临时工?
- 创建临时对象,但没有内存泄漏?
谢谢你。
编辑:以下答案中提供的解决方案摘要
感谢 RiaD、James Kanze、Shahbaz 和 Razispio 的回答。
我要问的是需要A
并B
成为数组类的对象才能获得效率和有效性。此外,在“标准”实现中,例如,对于配备复制构造函数的数组类,类似的语法B=f(A);
将需要创建临时对象。然而应该提到,临时变量不一定是限制,因为许多编译器可以省略额外的临时变量。与此相反,类似这样的语法f(A,B);
会避免临时性。使用表达式模板B=f(A);
的解决方案在内部使用时启用语法f(A,B);
,使临时变量的使用可以忽略不计。一种有效的替代解决方案是使用移动赋值运算符,例如
有关详细信息,请参阅下面提供的答案。