Niepoprawne przekazanie argumentu do funkcji

0

Witam,
mam problem z odpowiednim przekazaniem wartości do funkcji.

void sort1( vector <int> a[], vector <int> b){
	sort( a[1].begin(), a[1].end() );//wykonuje się poprawnie
	sort( b.begin(), b.end() );//problem
vector<int> tab[size];
vector<int> tab2; 

Tak wygląda wywołanie funkcji:

sort1(tab,tab2); 
0

Jaki problem?

Jak zrozumiesz czemu wyświetla 0 to zrozumiesz czemu sortowanie nie działa:

void foo(int i) { i=666; }
int main()
  {
   int x=0;
   foo(x);
   cout<<x<<endl;
   return 0;
  }
0
_13th_Dragon napisał(a):

Jaki problem?

Jak zrozumiesz czemu wyświetla 0 to zrozumiesz czemu sortowanie nie działa:

void foo(int i) { i=666; }
int main()
  {
   int x=0;
   foo(x);
   cout<<x<<endl;
   return 0;
  }
void foo(int *i) { *i=666; }
int main()
  {
   int x=0;
   int *wsk=&x;
   foo(wsk);
   cout<<x<<endl;
   return 0;
  } 

Jednak sortowanie nadal mi nie działa.

0

@13th_dragon Tylko, że w jego funkcji sort1 nie ma przypisania, apage!

1

Myślę, że nie doczekamy się zrozumienia podpowiedzi @_13th_Dragon, więc napiszę wprost

void sort1( vector <int> a[], vector <int> b)

b jest kopią vectora, który przekazałeś do funkcji (tab2).

0

Panowie ja zdaję sobie sprawę z tego, że źle przekazuję. Tylko nie wiem jak dokładnie ma to wyglądać przy wektorach.

void sort1( vector <int> a[], vector <int> *b){
	sort( a[1].begin(), a[1].end() );//wykonuje się poprawnie
	sort( *b.begin(), *b.end() );//problem
vector<int> tab[size];
vector<int> tab2;
vector<int> *wsk=&tab2; 
sort1(tab,wsk); 
1
void sort1( vector <int> a[], vector <int> &b){
    sort( a[1].begin(), a[1].end() );//wykonuje się poprawnie
    sort( b.begin(), b.end() );//problem


vector<int> tab[size];
vector<int> tab2;

sort1(tab,wsk);
1
 vector <int>& b

Użyj referencji.

0

Dziękuję za pomoc :)

0

@Pijany_kot Rozwinąłbyś temat? Generalnie referencjan nie jest potrzebna przy podawaniu parametrów funkcji.

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