webForumDet fria alternativet

Problem med vector och pekare

3 svar · 439 visningar · startad av sadsmile

sadsmileMedlem sedan jan. 2002177 inlägg
#1

Hej

Sitter här och försöker lära mig lite C++ på egen hand. För att förstå mig på det där med vectorer och pekare så har jag kodat ihop en liten grej där en vector skickas till en funktion och i denna funktionen så görs en swap för att byta plats på två element i vectorn. Detta funkar som det skall. Men när jag sedan skall skriva ut vectorn så blir det en massa annat som skrivs ut i stället.

Lite exempel på vad koden innehåller.

Prototypen:

void swapFunkt(vector<int> *sortVekt, int x, int y);

Skapadet av vectorn:

vector<int> bytVektor;

Anrop av funktionen;

swapFunkt(&bytVektor, tal1, tal2);

Själva funktionen swap:

void swapFunkt(vector<int> *sortVekt, int x, int y)
{
    swap (sortVekt[x], sortVekt[y]);
}

Utskriften i main (ligger i en for-loop):

cout << bytVektor.at(i)<< endl;

Skickar jag t.ex. med att elementen 0 och 2 skall byta plats och att dessa från början innehåller 15 och 5 så borde det ju efter ändringen skrivas ut 5 resp 15. Men i stället så skriver programmet ut -1 och 2088857568.

Jag förmodar att det har med pekarna att göra men jag har inte klurat ut vad jag skall ändra för att få en korrekt utskrift.

MVH
Anders

sadsmileMedlem sedan jan. 2002177 inlägg
#2

Fick hjälp på annat håll så nu funkar det.

Anders

KoplikMedlem sedan juli 2001826 inlägg
#3

Fick du någon förklaring/lösning som kan vara värd att beskriva?

sadsmileMedlem sedan jan. 2002177 inlägg
#4

Visst...

I funktionen skall det stå

swap ((*sortVekt)[x], (*sortVekt)[y]);

Inte

swap ((sortVekt)[x], (sortVekt)[y]);
Genererad på 375 ms · cache AV · v20260730165559-full.f96bc7eb