2014-11-24 70 views
0

我要乘其存儲爲vectors.To兩個整數存儲我使用乘兩個大整數存儲爲整數載體

std::vector<std::vector<int>> result 

在哪裏存儲部分結果行和最後一行將最終結果存儲最終結果。我計算了部分結果行,現在必須添加它們。我已經有了一個大整數加法函數。爲了對齊部分結果行,我所做的是在所有部分結果行中追加零(如果需要)附加到第二部分結果行,2 0附加到第三部分結果行等)。然後我添加所有部分結果行並將結果存儲在另一行。現在我以類似的方式刪除附加的零。

void putzeroesatend(std::vector<std::vector<int>> &something) 
{ 
    std::vector<std::vector<int>>::iterator i;  
    int k=0; 
    for(i=something.begin();i!=something.end();i++,k++) 
    { 
     for(int p=1;p<=k;p++) 
      (*i).push_back(0); 
    } 
} 
void removezeroesatend(std::vector<std::vector<int>> &something) 
{ 
    std::vector<std::vector<int>>::iterator i; 
    int k=0; 
    for(i=something.begin();i!=something.end()-1;i++,k++) 
    { 
     for(int p=1;p<=k;p++) 
     (*i).pop_back(); 
    } 
} 

然後在我的計算部分結果後乘功能,我做的

putzeroesatend(result); 
std::vector<int> newrow; 
result.push_back(newrow); 

for(p=result.begin();p!=result.end()-1;p++) 
{ 
    result[result.size()-1]=add(result[result.size()-1],*p); 
} 

removezeroesatend(result); 

這是工作,但是這可能是一個更好的解決方案中添加部分結果,而無需追加零以下然後將其刪除。

+0

只需創建一個採用未對齊操作數的新增函數。 – 2014-11-24 15:39:22

回答

0

正如@Mark Ransom所建議的那樣,您可以創建一個帶有未對齊操作數的add函數。但是我認爲將大的int表示形式封裝在包含指數的類中,然後爲這些對象編寫操作數可能會更好。