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.
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ęć...
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.
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.
Zwracanie wskaźnika na obiekt tworzony wewnątrz funkcji to krótka droga do wycieków pamięci.
Czy ktoś zna jakieś inne generatory liczb psedolosowech. Ten nie jest zbyt dobry. Pozdrawiam.
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.
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[];
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.
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?
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;
}