我有这段代码,但它给了我很多错误。我没有理由背后的原因。
void coolingpie(int n)
{
int i=0,j;
while(i<n)
{
int p;
vector<int> pies[p], racks[p]; // p number of cooling pie
cin>> p; //number of coiling pies or racks
for(j=0;j<p;j++)
{
cin>>input; //reading the weights of the p pies
pies.push_back(input);
}
for(j=0;j<p;j++)
{
cin>>p; // reading the maximum weights of the racks
racks.push_back(input);
}
std::sort(pies.begin(), pies.end());
std::sort(racks.begin(), racks.end());
findthemaxpies( vector<int>& pies, vector<int>& racks);
}
}
答案 0 :(得分:1)
您应该始终将您收到的错误与您的代码一起发布。
在您的情况下,您的一些错误可能源于您声明向量的方式。放下括号,你应该没事(就此而言)。
vector<int> pies;
答案 1 :(得分:0)
更改
vector<int> pies[p], racks[p]; // p number of cooling pie
到
vector<int> pies(p), racks(p); // p number of cooling pie
如果馅饼是一个类,你可以创建一个馅饼矢量
vector<pies> piesObject(p);
答案 2 :(得分:0)
您的计划有几个问题:
vector<int> pies[p], racks[p];
应该是:
vector<int> pies, racks;
原因是第一个定义声明了array
vector
。这肯定是不对的,除非你真的想要声明一个向量数组。你想要做的是声明两个从没有元素开始的向量,这就是第二行的作用。
然后你有了这个:
findthemaxpies( vector<int>& pies, vector<int>& racks);
该行声明了一个名为findthemaspies
的函数。这是合法的,但什么都不做。如果你想用这些参数调用函数,那就是:
findthemaxpies( pies, racks);
第二个循环还有另一个问题:
for(j=0;j<p;j++)
{
cin>>p; // reading the maximum weights of the racks
racks.push_back(input);
}
您在循环条件中使用p
,但在循环中更改p
,以及使用永不更改值的input
。这不可能是正确的。它可能应该是这样的:
int p2;
for(int j=0; j<p; j++)
{
cin >> p2; // reading the maximum weights of the racks
racks.push_back(p2);
}