【问题标题】:Using vectors in c++ [closed]在 C++ 中使用向量 [关闭]
【发布时间】:2014-08-29 23:36:55
【问题描述】:

我有这段代码,但它给了我很多错误。我不明白背后的原因。

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

【问题讨论】:

  • 让它vector&lt;int&gt; pies, racks;
  • 这条线应该做什么? findthemaxpies( vector&lt;int&gt;&amp; pies, vector&lt;int&gt;&amp; racks);
  • 如果您在以p 为上限的同一循环中读入p,那么您将度过一段糟糕的时光。
  • vector&lt;int&gt; pies[p], racks[p]; 你误解了vector 的作用。单个vector 可以包含多个值。您正在使用该行代码声明一个 vectors 数组。这当然是不正确的。
  • 在初始化之前你正在使用 p。

标签: c++ data-structures vector


【解决方案1】:

您应该始终将收到的错误与您的代码一起发布。

在您的情况下,您的一些错误可能源于您声明向量的方式。放下括号,你应该没问题(在这方面)。

vector<int> pies;

【讨论】:

    【解决方案2】:

    你的程序有几个问题:

    vector<int> pies[p], racks[p];
    

    应该是:

    vector<int> pies, racks;
    

    原因是第一个定义声明了vectorarray。这肯定是不对的,除非你真的想声明一个向量数组。您要做的是声明两个以无元素开头的向量,这就是第二行所做的。

    然后你有这个:

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

    【讨论】:

      【解决方案3】:

      改变

       vector<int> pies[p], racks[p];      // p number of cooling pie
      

      vector<int> pies(p), racks(p);      // p number of cooling pie
      

      如果 pies 是一个类,你可以创建一个 pies 向量

      vector<pies> piesObject(p); 
      

      【讨论】:

        猜你喜欢
        • 2015-05-28
        • 2016-04-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-22
        • 2020-10-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多