矢量声明

Vector Declaration

本文关键字:声明      更新时间:2023-10-16

我是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];

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

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

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

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);