C++中的全局变量

Sup*_*ing 4 c++ arrays

所以我有这样的事情

#define HASHSIZE 1010081

static struct nlist *hashtab[HASHSIZE];
Run Code Online (Sandbox Code Playgroud)

现在我希望能够更改我的hashtab的HASHSIZE,因为我想测试不同的质数,看看哪个会减少碰撞.但Arrays不采用可变大小,因此HASHSIZE必须是常量.有办法解决这个问题吗?

rob*_*.14 10

使用std :: vector,在任何关于C++的好书中都有描述.

Vector的工作原理与数组类似但可调整大小,其初始大小也不必是编译时常量.

#include <vector>

std::vector<nlist*> hash; //empty hash
hash.resize(1010081); //now it has 1010081 elementns
Run Code Online (Sandbox Code Playgroud)


Pra*_*rav 10

为什么不在std::vectorC++中使用而不是使用数组?

例如:

  std::vector<nlist *> hashtab; 
  hashtab.resize(<some_value>); 
Run Code Online (Sandbox Code Playgroud)

但无论如何,如果你使用g++因为g++支持可变长度数组(VLA)作为扩展,你可以这样做 .

例如:

  int HASHSIZE=<some_value>
  static struct nlist *hashtab[HASHSIZE];
Run Code Online (Sandbox Code Playgroud)