声明全局变量<vector> issue </vector>

时间:2014-04-17 02:53:06

标签: c++

以下是我的代码片段

int lengthoftable;
vector<int> hashtable(lengthoftable);

int main(void) {
    cin >> lengthoftable;
}

我要做的是声明一个全局变量向量,根据要在主体中采用的可变大小进行初始化。

问题:自cin&gt;&gt;以来它是否有效是否在哈希表的声明之下?如果它不起作用,有没有办法解决这个问题?我希望在变量上初始化一个全局变量。

2 个答案:

答案 0 :(得分:3)

为什么要真的想要做以下事情?

vector<int> hashtable(lengthoftable);

如何以与

不同的方式做到这一点
vector<int> hashtable;

int main() {
    cin >> lengthoftable;
    hashtable.reserve( lengthoftable );
}

事实上,通过获取用户的输入来跟踪矢量的长度也是一个坏主意。向量是一个可变大小的数组,其中内存管理内存,动态调整大小和容量,没有理由在外部跟踪它的长度。它甚至可能导致实际长度与lengthoftable不同的不一致和错误。

答案 1 :(得分:2)

vector<int> hashtable;

int main(void) {
  int lengthoftable;
  cin >> lengthoftable;
  hashtable.resize(lengthoftable);
}