矢量宣言

时间:2016-07-08 14:59:25

标签: c++ vector stl

我是STL的新手,我无法理解矢量这种奇怪的行为。 在为问题编写代码时,我对pair<int,int>的向量使用了两种类型的声明。

首先:

int n,m; 
cin>>n>>m;
vector<pair<int,int> > v[n*m];

第二

int n,m,size;
cin>>n>>m; 
size=n*m;
vector<pair<int,int> > v[size];

如果观察到第一个没有给出所需的结果,而第二个类型给我正确的结果。

这两种类型之间有什么区别吗?如果是,有什么区别?

1 个答案:

答案 0 :(得分:1)

这些都不应该工作(甚至编译),因为你声明一个具有“动态”(运行时)大小的本地数组:

size_t x = 34;
int y[x]; // Error!

您的代码所做的是声明包含K向量(vector<pair<int,int>>)的数组,而您可能需要的是大小为K的向量:

int n, m;
cin >> n >> m; 
vector<pair<int,int> > v(n * m);