+ 1

Comparing two vectors but getting random number

I have a problem where when I compare a number with another empty number I get a random number. https://code.sololearn.com/cGoECLzUyQMr/?ref=app

17th Mar 2022, 7:39 PM
Yones Mussa
8 Réponses
+ 1
The problem with the current code is that when checking for the smallest vector, you're not using the variable, nor do you know which vector is the big or small one. Pointers would be perfect here, as in: std::vector<int>* small, *big; if(vec_a.size() < vec_b.size()){ small = &vec_a; big = &vec_b; }else{ small = &vec_b; big = &vec_a; } From here on whenever you use small or big you're automatically using the correct one. Then depending on your previous answer of "what should max do?" Remember that the vector default initializes the values after you resize it, for an int that's 0. max( -1, 0 ) where the 0 didn't exist before = -1 or 0? If it should be -1 then do: transform with the pointers, small in the 1st 2, big in the 3rd, resize result to the big size, copy from big->begin() + small->size() to result. If it should be 0: resize small to big->size(), don't bother copying, transform big in the first 2, small in the 3rd
18th Mar 2022, 9:42 AM
Dennis
0
Well, the vectors are of different sizes. It seems to be adding default initialized integers (zero) for comparison. So, 0 is larger than -3 and 7 is larger than 0. Thus the 0 and 7 at the end.
17th Mar 2022, 9:14 PM
Mustafa A
0
The numbers are random. I need to find a way of doing it without hardcoding it.
17th Mar 2022, 9:24 PM
Yones Mussa
0
Yones Mussa I am getting 10, 20, 0, 7. Consistently. Is it random for you? Is all of them random or just the last two?
17th Mar 2022, 9:27 PM
Mustafa A
0
Mustafa A The size of the vectors are random.
17th Mar 2022, 10:58 PM
Yones Mussa
0
std::transform requires that the 2nd vector has at least the size of the first vector. If your vectors are of different sizes then std::transform might not be a good idea to use. What should the result of max of number a and the 'non existing' number b mean anyway? If the answer is 'a' then iterate over the smallest vector and copy the rest from the big vector.
17th Mar 2022, 11:49 PM
Dennis
0
Can you see what im doing here? https://code.sololearn.com/cTJH19vg2UpA/?ref=app
18th Mar 2022, 12:04 AM
Yones Mussa
18th Mar 2022, 12:04 AM
Yones Mussa