przekazanie wektora z funkcj do main

0

Witam. Mam problem jak przekazać z funkcji wektor(tablice jedno wymiarową do) do programu głównego, też wektor tylko o 3 pola większy. Jak nadać numeracje żeby pola się nie wymieszały. Pozdrawiam.

0

O takie coś chodzi ?

vector<int> *fun(int x);

int main()
{
    vector<int> v;
    v = *fun(5);
    for (int i = 0; i < v.size(); i++)
        cout << v[i] << "\n";

    return 0;
}


vector<int> *fun(int x)
{
    vector<int> *tmp = new vector<int>;
    tmp->push_back(x);
    return tmp;
}

jeszcze lepiej przeslac wskaźnik do vectora do funkcji - łatwiej zwalniać pamięć...

3

Zawsze stosuj najprostsze środki. Potrzebujesz zwrócić wektor? Zwróć go.

vector<int> fun(int x)
{
    vector<int> tmp;
    tmp.push_back(x);
    return tmp;
}

i później

vector<int> v = fun(5);

Dzięki optymalizacjom kompilatora w zdecydowanej większości przypadków (w tym na 99,99%) przy zwracaniu tego wektora i jego przypisaniu do innego, elementy NIE będą nadaremno kopiowane dzięki return value optimization.
Jeżeli chcesz mięć pewność stuprocentową, utwórz go w main (niech nawet będzie pusty) i przekaż za pomocą referencji do funkcji, która go wypełni.

0

int vektor_los(int vektor[])
{
int ran;
int ran1;
for(int j=0; j<3; j++)
{
ran=rand()%100;
//cout<<ran <<"\t";
vektor[j]=ran;
ran1=vektor[0];
}
return ran1;
}
main()
{
..........

  int vektor[7];

vektor[0]=vektor_los(vektor);

.........

Wyszło mi coś takiego. Czy to dobrze zrobiłem. Pierwszy element musiałem wyciągnąć z tablicy bo nie chciał inaczej wejść. Chyba że są na to inne sposoby.
void funkcji - nie działa kompilator nie puści, a wtedy by sie dało bez problemu tylko argumentem wypuścić wektor.

0

Zwracanie wskaźnika na obiekt tworzony wewnątrz funkcji to krótka droga do wycieków pamięci.

0

Czy ktoś zna jakieś inne generatory liczb psedolosowech. Ten nie jest zbyt dobry. Pozdrawiam.

0

Nie za bardzo kumam. Początkujący jestem. Ja ciesze się że działa. ale jak by można trochę łopatologicznie to hętnie wysłucham.

0

Przeglądnąłem propozycje Jur3k. Obawiam się ze nie o to chodzi. jestem początkujący i do wskaźników na funkcje jeszcze nie doSZEDŁem.
int vektor_los(int vektor[])
{
__ int ran1; __

__ return ran1;__
}
main()
{
..........

  int vektor[7];

vektor[0]=vektor_los(vektor);

.........
to chyba ma być ten wyciek pamieci.
chodzi o to
czy można napisać tak:
return vektor[];

0

Fajnie wyglądają te generatory. tylko jak na początkującego nie wiele z tego rozumiem. Przydałby się taki z ze standardowej biblioteki c++. albo coś co jest w darmowym kompilatorze. Endrju.

0

fajnie wygląda, ale jakie biblioteki i zmienne to ma:
vector<int> fun(int x)
{
vector<int> tmp;
tmp.push_back(x);
return tmp;
}

czy w darmowym kompilatorze to ruszy?

0

Czy przypadkiem nie chodzi ci o coś takiego:

void vektor_los(int vektor[],int ile)
  {
   for(int j=0;j<ile;++j) vektor[j]=rand()%100;
  }

int main()
  {
   int vektor[7];
   vektor_los(vektor,7);
   for(int j=0;j<ile;++j) cout<<vektor[j]<<endl;
   return 0;
  }

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