Dzień dobry.
Chcę zacząć korzystać z biblioteki STL, zamiast pisać własne algorytmy (to drugie już umiem w miarę dobrze, jak mi się wydaje). Chcę zwrócić zakodowaną w postaci bitów numery indeksów, pod którymi moja tablica przechowuje maksymalną wartość w całej tablicy. Napisałem kod w C++ (z STL i bez STL). Chciałbym jednak go odchudzić i pisać w samym STL. Jakiego algorytmu STL użyć, aby przetworzyć tablicę i uzyskać zamierzony efekt?
Tutaj kod z niepełnym STL:
unsigned char whichAxisHasTheHighestValue()
{
int maximum = max_element(tab, tab + 3);
unsigned char bits = 0;
for (int i = 0, int b = 1; i < 3; i++, b *= 2)
if (tab[i] == maximum)
bits += b;
return bits;
}
Jak można zauważyć, funkcja ustawia kolejne bity na 1, jeżeli dana komórka tablicy posiada wartość maksymalną. Użyłem algorytmu STL do znalezienia maksymalnej wartości. Chciałbym wymazać tego fora
i zamiast niego użyć algorytmu, aby skrócić kod. Jakiego algorytmu mógłbym użyć?
Michał