声明全局变量<vector>问题

Declaring global variable <vector> issue

本文关键字:问题 gt vector lt 全局变量 声明      更新时间:2023-10-16

下面是我的代码片段

int lengthoftable;
vector<int> hashtable(lengthoftable);
int main(void) {
    cin >> lengthoftable;
}

我试图做的是声明一个全局变量向量,它是根据主体中要取的变量大小初始化的。

问题:cin>>在哈希表的声明下面,它会起作用吗?如果不起作用,有没有办法解决这个问题?我想要一个在要接收的变量上初始化的全局变量。

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

vector<int> hashtable(lengthoftable);

不如像那样做得稍微不同一点

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

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

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