在c ++中使用向量

时间:2014-08-29 23:36:56

标签: c++ data-structures vector

我有这段代码,但它给了我很多错误。我没有理由背后的原因。

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

3 个答案:

答案 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);
  }