2014-08-29 127 views
-5

我有這段代碼,但它給了我很多錯誤。我沒有得到它背後的原因。在C++中使用矢量

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

使其'矢量餡餅,衣架;' – 2014-08-29 23:38:18

+0

這是什麼線怎麼辦? '找到最大值(矢量&pies,矢量&機架);' – PaulMcKenzie 2014-08-29 23:38:48

+0

如果你在同一個循環中讀入'p',那麼'p'就是上限,你將會有一段糟糕的時間。 – 2014-08-29 23:39:47

回答

0

有幾件事情錯了你的計劃:

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

您應該隨時發佈您隨代碼一起發送的錯誤。

就你而言,你的一些錯誤可能源於你如何聲明你的向量。放下方括號,你應該沒問題(在這方面)。

vector<int> pies; 
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);