nieszcęsny vertex ;]

0

struct vertex{
short int s; //droga
int v2; // 2gi wierzcholek
};

typedef vector< vector< vertex > > wekt; // nowy typ = wektor wektorow
wekt wektor;

Jaki typ przekazuję do funkcji? BO wywala mi problemy ;/
getWay(wektor[mainBusStop]);

Próbowałem

int getWay(wekt wektorek) {

}

--> error: conversion from ‘std::vector<vertex, std::allocator<vertex> >’ to non-scalar type ‘wekt’ requested

int getWay(vertex wektorek) {

}

--> error: conversion from ‘std::vector<vertex, std::allocator<vertex> >’ to non-scalar type ‘vertex’ requested

0

Nie kumam chcesz zrobic vektor vertex'ow? Czy wektor wektorow vertexow? :-)

Bo jesli to pierwsze to zrob to tak:

typedef strut tagTVertex
{
short int s; //droga
int v2; // 2gi wierzcholek
} TVertex;

i definicja wektora werteksow
typedef vector<TVertex> TVecVertex; <<wektor werteksow

potem juz masz
TVecVertex moj_wektor;

function ble(TVecVertex vec)
{
vector<TVertex>::iterator i;
for(i=vec.begin();i!=vec.end();i++)
{
(*i).s = 5;
(*i).v2 = 15;
}
}

//---------------------------------------------

Jesli to drugie to jesli zdefiniujesz sobie nowy typ jak wyzej czyli wektor werteksow to potem tylko dajesz tak:
typedef vetor<TVecVertex> TWektorWektorow;

function ble(TWektorWektorow ww)
{
vector<TVecVertex>::iterator i; <<wskaznik na wektory
vector<TVertex>::iterator v; <<wskaznik na verteksy

for(i=ww.begin();i!=ee.end();i++)
{
for(v=(*i).begin();v!=(*i).end();v++)
{
(*v).s = 5;
(*v).v2 = 15;
}
}
}

mniej wiecej..

0

tak mialo byc..

function ble(TWektorWektorow ww)
{
vector<TVecVertex>::iterator i; <<wskaznik na wektory
vector<TVertex>::iterator v; <<wskaznik na verteksy

for(i=ww.begin();i!=ww.end();i++)
{
for(v=(*i).begin();v!=(*i).end();v++)
{
(*v).s = 5;
(*v).v2 = 15;
}
}
}

0

@kwasek2000: a operator -> to co zjadło?

0

Uzywam vektorow zawsze z wskaznikami a wiec zawsze posluguje sie operatorem -> czyli (*i)->cos_tam tu biorac pod uwage ze nie jest to wskaznik (pojemnik wskaznikow) napisalem operator '.' czyli (*i).cos_tam

Jesli wklepiesz ten kod do c++buildera ( ktorego to srodowiska uzywam do pisania progsow ) i poprawisz moje literowki :-) zobaczysz ze to co napisalem jest poprawne....

Gdyby bylo tak:

typedef strut tagTVertex
{
short int s; //droga
int v2; // 2gi wierzcholek
} TVertex;

i potem zdefiniowalbym sobie wskaznik do typu TVertex a wiec np:

typedef TVertex *LPVERTEX;

i zdefiniowal nie wektor jaki zdefiniowalem a wektor wskaznikow ! czyli...

typedef vector<LPVERTEX> TPVecVertex; <<wektor WSKAZNIKOW werteksow

to podczas iterowania wektora musialbym uzywac jak slusznie zauwazyles operatora -> zamiast operatora .

biorac pod uwage jednak to ze nie zdefiniowalem wektora wskaznikow do tego typu a wektor przetrzymujacy dane tego typu operator . jest poprawny.

Sprawdz...

0

oczywisie typedef struct tagTVertex a nie typedef strut tagTVertex

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