I have the following two vectors in C++11:
vector<unsigned char> left = { 1, 2, 3, 4, 5, 6 }; // it is meant to represent the number: 123456
vector<unsigned char> right = { 1, 2, 3, 4 }; // meant to be number: 1234
After a function processes them, they become:
left = { 6, 5, 4, 3, 2, 1 };
right = { 4, 3, 2, 1 };
Now, I need to complete the shorter one with zeros at the end until they are equal in size()
. I have thefollowing method:
void bigint::process_operands( vector<unsigned char> & left, vector<unsigned char> & right )
{
size_t left_size = left.size();
size_t right_size = right.size();
if( left_size < right_size )
{
size_t size_diff = right_size - left_size;
for( size_t i = 0; i != size_diff; ++i )
left.push_back( '0' );
} else if( right_size < left_size )
{
size_t size_diff = left_size - right_size;
for( size_t i = 0; i != size_diff; ++i )
right.push_back( '0' );
}
}
Is there any better implementation?