Jak przekazać dwuwymiarowy vector przez funkcję i odebrać dane ?

0

Mam kłopot z prostym jakby się wydawało kodem:

 
#include <stdio.h>
#include <vector>
#include <string>
#include <iostream>

using namespace std;

typedef vector <vector <int> >  vector_2;

vector_2 test(vector_2& value)  
{
	cout << value[0][0] << endl;
}

int main () {

vector_2 abc;
test(abc);

return 0;
}

Mam błąd: Segmentation fault
po uruchominiu programu
jak wpisze

vector_2 abc;
test(abc);

to tak samo. A potrzebuje zadeklarowac w glownym programie vector i przekazać do funkcji żeby do niego wstawiała dane i zwracała je. Ale na razie utknąłem na tym problemie :( Wiecie co to może być ?

0

Ale czego ty oczekujesz? Masz PUSTY wektor a próbujesz odnosić się do jego pierwszego elementu. Nie dziwota że się sypie. Żeby odwołać się do elementu wektora ten element musi tam być...

0

ALe jeśli funkcja

vector_2 test(vector_2& value)  
{
   
}

będzie pusta to tez mam ten sam błąd. Bo dopiero w funkcji robie resize i wypelniam vector i chcialbym to zwrócić do głównego programu.
A chciałem tylko dac do funkcji info gdzie ma zwrócić te dane.

Nawet jak zrobie

int main () {
 
vector_2 abc(10);
test(abc);
 
return 0;
}

to tez ten sam blad :(

1

To jest przeciez vector vectorow a inicjalizujesz go jak tablice jednowymiarowa. Pierwszym 'wymiarem' jest konkretny vector drugim jego element. Dodatkowo czemu robisz funkcje ktora dostaje referencje do obiektu dzieki czemu moze go zmieniac i jednoczesnie zwracasz vector. Watpie zeby bylo Ci to potrzebne.

typedef vector < vector<int> > vector2d;

void func(vector2d &vec)
{
    // do something...
    vec[0][0] = 5;
}

int main()
{
    vector2d vec(10, vector<int>(10));
    cout << vec[0][0] << "\n";
    func(vec);
    cout << vec[0][0] << "\n";
    return 0;
}
0

Czemu robie funkcje ? bo jestem (gapą) w lekkim tłuamczeniu cały pierdzielony dzień robie te vectory napisałem funkcję uzupełniającą gdzie widać że mam tablice elementów a drugą wartością jest tablica z kolejnymi elementami. Teraz śmiga wszystko i nie musze nic zracać bo pracuje sobie na kopii jedyne co wypada to chyba wyczyścić później ten vector
Dzieki za pomoc!!!

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