所以我有这样的事情
#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)
| 归档时间: |
|
| 查看次数: |
554 次 |
| 最近记录: |