Witam,
Mam swój sposób na grupowanie danych w vectorze ale poszukuję szybszej metody jeśli w ogóle taka istnieje.
Grupowanie polega na sumowaniu wartości przy spełnionym warunku równości jednego, dwóch lub więcej elementów w kontenerze.
Przykład:
Kontener ma takie wartości typu string ale to nie ma znaczenia
A;B;0;M;3;4;C;D;0;M;3;4;A;B;0;M;3;4
Mój sposób polega na tym, że wyobrażam sobie vector jako tablicę dwuwymiarową a iteratory skaczą po wierszach co 6 element
A;B;0;M;3;4
C;D;0;M;3;4
A;B;0;M;3;4
for ( str = vTab.begin(); str < vTab.end(); str+=6 )
{
if ( (*str) == L"0" ) continue;
for ( it = str+6; it < vTab.end(); it+=6 )
{
if ( (*it) == L"0" ) continue;
if( (*str) == (*it) && (*(str+1)) == (*(it+1)) )
{
// jeśli warunek zajdzie to tu sumowane są wartości liczbowe 3 i 4 z wierszy a wiersz jest wypełniany zerami żeby przy kolejnej pętli nie brany był już pod uwagę
}
}
}
Wynik:
A;B;0;M;6;8
C;D;0;M;3;4
0;0;0;0;0;0
Jest to proste rozwiązanie grupowania jednak przy kilkuset wierszach grupowanie potrafi zająć trochę więcej niż chwilę stąd moje pytanie.
Dziękuję