webForumDet fria alternativet

Problem med vector och pekare

C/C++

3 svar · 439 visningar · startad av sadsmile

Medlem sedan jan. 2002177 inlägg
Frågan#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

Medlem sedan jan. 2002177 inlägg
#2

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

Anders

Medlem sedan juli 20011 129 inlägg
#3

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

Medlem sedan jan. 2002177 inlägg
#4

Visst...

I funktionen skall det stå

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

Inte

swap ((sortVekt)[x], (sortVekt)[y]);
258 ms totalt · 3 externa anrop · v20260731065814-full.265f3fdd
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)