【发布时间】:2015-11-25 12:40:00
【问题描述】:
这是一个简单的 C++ 问题。
问题描述: 我有一个函数,它将一个整数作为输入,并返回一个长度为零的向量。假设我使用相同的参数多次调用该函数。我要避免的是我的函数每次调用时都会创建零向量。我希望这仅在第一次使用给定输入调用函数时发生。
我是如何处理它的: 这让我想到了静态变量。我想创建一个静态向量来保存每种大小所需的零向量,但无法弄清楚如何实现这一点。例如,我想要一些“看起来”像 [ [0], [0,0], ...] 的东西。
如果有其他方法可以解决此类问题,请随时分享!此外,我的向量示例有点专业,但更通用的回复(关于依赖于参数的静态变量)将不胜感激。
附带问题: 进一步概括,是否可以为每个参数选择定义一个仅调用一次的函数?
非常感谢。
【问题讨论】:
-
使用 map
作为静态实例。 -
向量的静态向量(或者更好的映射)是正确的想法,你只需要懒惰地初始化它。
-
不清楚你在追求什么,你返回的向量是
const吗?否则,无论如何,您每次都需要制作副本。除非复制速度比零初始化快,否则它可能是有意义的。并且不可能使每个参数集执行一次的函数,但是如果传递与以前相同的参数集,则可以创建一个什么都不做的函数。它会执行,但会进行检查并立即返回,或者提供缓存的结果等。 -
这种技术称为“记忆化”。参见例如stackoverflow.com/questions/17805969/…。
-
我可以看到三种解释这个问题的方法。 1) 您需要一个按值返回
vector的函数,即您想要更改的副本。 2)您需要一个函数,该函数返回对您不需要更改的零向量的 const 引用。 3) 您需要一个函数,该函数返回对最初全零但可以更改的向量的非常量引用。显示您的代码可能会有所帮助。
标签: c++ static-members