[STL] wektor i funkcje

0

Jak zapisać w funkcji jako parametr wektor ? Chodzi o to, że do tablizy wrzucilo mi przykladowe ciagi i chcę z nich korzystać w napisanej przeze mnie funkcji qsort.
Zadanie ogólnie polega na posortowananiu numerów kont bankowych, konto bankowe zapisane nastepujaco
2 cyfry kontrolne, 8 cyfr banku, 16 cyfr konta(4 grupy po 4 znaki) i wymyslilem ze wczytam to do 6 wektorów a nastepnie bede sortowal wg grup poczajac od lewej grupy a skonczywszy na prawej. Algorytm napisałem już ale nie wchodzi mi tak duży zakres, na tablicach int[100000]. Wiec musze troche go przerobić na wektory i tu wlasnie mam problem z wektorem i funkcja. Chyba ze ma ktos inny pomysl na posortowanie to jestem otwarty na propozycje.

0

Na przykład:
void funkcja(vector<int>& vect) {}
Ważne, żeby przekazywać przez referencje, wtedy funkcja będzie mogła operować na oryginalnym vectorze (zapisze tam tez zmiany) i nie będzie musiała go kopiować (co przy vectorach wypełnionych dużymi ilościami danych jest raczej kiepskim pomysłem ;))

0

wielkie dzieki, a teraz jak mam

vector<int[26]> l;

to jak napisać polecenie

l.resize(n);

żeby rezerwowało tyle miejsca ile wynosi n*size(int)*26, ale żeby dzialalo to na int[26]

czy zamiast int można wpisać short ?

0
l.resize(n*26)

Vector w przeciwieństwie do tablicy 'wie' co ma w środku, więc nie trzeba mu podawać rozmiaru zmiennej (a poza tym nie 'size(int)' tylko 'sizeof(int)' ;))
2. Możesz wpisać cokolwiek ;) byle by to było jakimś typem - więc albo któryś z typów wbudowanych albo własną klasę.

0

wlasnie sprawdzilem

l.resize(n*26);

i zwraca błąd
czy l.sort czy cos takiego zadziala tez na ciag znakow ?

0
wafcio napisał(a)

wlasnie sprawdzilem

l.resize(n*26);

i zwraca błąd

No fajnie, ale jaki? Nie jestem jasnowidzem więc skąd mam wiedzieć co ci kompilator pokazuje. A najlepiej daj jakiś większy kawałek kodu, łatwiej będzie zobaczyć co nie działa.

czy l.sort czy cos takiego zadziala tez na ciag znakow ?

Na ciąg znaków w sensie że tablicę znakową czy na stringa? Na stringa na pewno, co do tablicy znakowej nie jestem pewny, ale do sorta można podać własną funkcję porównującą więc można samemu coś napisać albo wziąć jakąś funkcję z stdlib ;)</quote>

0

zmienilem troche moj program, zrobilem 6 wektorów zamiast tablicy, ale nie o to chodzi. Jak przekazać wektor do funkcji aby po wykonaniu funkcji zmianila sie zawartość wektor ?

void QuickSort(vector<int>& T, int Lo, int Hi, vector<int> A, vector<int> B, vector<int> C, vector<int> D, vector<int> E)
{
   int i,j;
   int x;
   x = T[(Lo+Hi)/2];
   i = Lo;
   j = Hi;
   do
   {
      while (T[i] < x) i++;
      while (T[j] > x) j--;
      if (i<=j)
      {
         int x = T[i];
         T[i] = T[j];
         T[j] = x;
         x = A[i];
         A[i] = A[j];
         A[j] = x;
         x = B[i];
         B[i] = B[j];
         B[j] = x;                  
         x = C[i];
         C[i] = C[j];
         C[j] = x;
         x = D[i];
         D[i] = D[j];
         D[j] = x;
         x = E[i];
         E[i] = E[j];
         E[j] = x;       
                  
         i++; j--;    
      }
   } while(i < j);
   if (Lo < j) QuickSort(T, Lo, j, A, B, C, D, E);
   if (Hi > i) QuickSort(T, i, Hi, A, B, C, D, E);
}

</quote>

1 użytkowników online, w tym zalogowanych: 0, gości: 1