Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Memory 静态std::C+中的向量+;功能_Memory_Static_Stdvector - Fatal编程技术网

Memory 静态std::C+中的向量+;功能

Memory 静态std::C+中的向量+;功能,memory,static,stdvector,Memory,Static,Stdvector,我有一个函数foo(),它声明并使用std::vector,例如: int foo(int n, ... other args) { vector<int> myVett(n); // foo is used for computation } intfoo(intn,…其他参数) { 载体myVett(n); //foo用于计算 } main()多次调用foo(): int main() { //... for(int ii = 0; ii < 1e3

我有一个函数foo(),它声明并使用std::vector,例如:

int foo(int n, ... other args)
{
  vector<int> myVett(n);

  // foo is used for computation
}
intfoo(intn,…其他参数)
{
载体myVett(n);
//foo用于计算
}
main()多次调用foo():

int main()
{
  //...

  for(int ii = 0; ii < 1e3; ii++)
      foo(n, ...)

  //...

 }
intmain()
{
//...
对于(int ii=0;ii<1e3;ii++)
傅(n,…)
//...
}
我希望foo()避免在每次迭代时为myVett分配内存 for()循环的

我可以在main()中为myVett分配内存,然后通过 它被转换为foo(),但我希望避免这种情况(因为在我的真实示例中 几个向量myVett1,myVett2,等等…我不想通过它们中的每一个 太富了()

目前,我在foo()中将myVett声明为静态:

static vector<int> myVett(n);
静态向量myVett(n);
这样行吗?这个应用程序似乎运行得快了一点,但我很担心 不确定我是否正确使用了关键字static。
谢谢

使用本地
静态
通常是最后的选择。它使您的函数非线程安全,并且更难测试,因为您现在在单独的调用之间有隐式耦合。谢谢!除了从main()传递向量之外,还有其他方法吗?您可以选择将向量传递给您不想要的foo。另一种选择是将foo方法放在一个静态类中,并使vector成为一个静态类变量。最好避免局部静态变量。如果程序是多线程的,那么静态方法就会出现问题。