2014-11-24 49 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表示形式封装在包含指数的类中,然后为这些对象编写操作数可能会更好。