关于C++的vector问题

来源:百度知道 编辑:UC知道 时间:2024/05/21 00:16:43
这是我程序的部分,error C2133: 's1' : unknown size,
error C2133: 's2' : unknown size
奇怪了,我不是定义了int num=vec.size();,应该有大小的呀,为什么编译会有这样的错误???

#include<fstream>
#include<vector>
using namespace std;

int main()
{
ifstream fin;
fin.open ("input.txt");
vector<int>vec;
int i=0;
int a;
while(!fin.eof ())
{
fin>>a;
vec.push_back(a);
for(int j=0;j<i;j++)
{
if(vec[i]<vec[j])
{
int temp=vec[i];
vec[i]=vec[j];
vec[j]=temp;
}
}
i++;
}
int num=vec.size();
int s1[num],s2[num];

数组的大小必须是编译时就确定的"常数",而你这里的num才有运行时才能确定,所以出现unknown size的错误,这种情况下只能用动态数组:
#include<fstream>
#include<vector>
using namespace std;

int main()
{
ifstream fin;
fin.open ("input.txt");
vector<int>vec;
int i=0;
int a;
while(!fin.eof ())
{
fin>>a;
vec.push_back(a);
for(int j=0;j<i;j++)
{
if(vec[i]<vec[j])
{
int temp=vec[i];
vec[i]=vec[j];
vec[j]=temp;
}
}
i++;
}
int num=vec.size();
//int s1[num],s2[num];
int *s1 = new int[num];
int *s2 = new int[num];
}

#include<fstream>
#include<vector>
using namespace std;

int main()
{
ifstream fin;
fin.open ("input.txt");
vector<int> vec;
int i=0;
int a;
while(!fin.eof ())