Hoppa till innehåll

Vektor.


Mugaga

Rekommendera inlägg

En vektor är i C++ en grupp objekt av samma typ precis efter varandra i datorns minne.

Till exempel, en vektor av typen int som innehåller tre int objekt kan se ut såhär i datorns minne:

http://img185.imageshack.us/img185/9200/cppvectorint3fl7.jpg

http://img185.imageshack.us/img185/cppvectorint3fl7.jpg/1/w214.png

 

Eftersom att en int(i min dator) är 4 bytes ökar minnesadressen för varje element med 4(hexadecimalt).

 

Koden "int myInt[7];" läses såhär: "myInt är en vektor av datatypen int med sju element(numrerade 0 - 6)".

 

T.ex myInt[2] är värdet i det tredje elementet i vektorn myInt, medans &myInt[2] är adressen till det tredje elementet i vektorn myInt. Om du ska ha tillgång till både värde och adress är dessa två sätt som nybörjare bäst att använda.

 

T.ex myInt är adressen till första elementet i vektorn myInt, och myInt + 2 är adressen till det tredje elementet i vektorn myInt. Det är detta som jag tycker är så bra med C++, man kan göra nästan vad som helst och få samma kod.

 

T.ex *(myInt + 2) är värdet i det tredje elementet i vektorn myInt, och *(&(*(&myInt[2]))) är också värdet i det tredje elementet i vektorn myInt(detta sätt är typ helt onödigt med roligt att veta).

 

Bra att veta: När man skapar en variabel som en vektor hanteras den som en konstant pekare(den pekar hela tiden till samma minnesadress). Ett lätt sätt att få tillgång till värdet i det x:te elementet använder man koden myVector[x - 1].

Redigerat av Vitdom
Länk till kommentar
Dela på andra sajter

  • 3 veckor senare...

En vektor är i C++ en grupp objekt av samma typ precis efter varandra i datorns minne.

Till exempel, en vektor av typen int som innehåller tre int objekt kan se ut såhär i datorns minne:

http://img185.imageshack.us/img185/9200/cppvectorint3fl7.jpg

http://img185.imageshack.us/img185/cppvectorint3fl7.jpg/1/w214.png

 

Eftersom att en int(i min dator) är 4 bytes ökar minnesadressen för varje element med 4(hexadecimalt).

 

Koden "int myInt[7];" läses såhär: "myInt är en vektor av datatypen int med sju element(numrerade 0 - 6)".

 

T.ex myInt[2] är värdet i det tredje elementet i vektorn myInt, medans &myInt[2] är adressen till det tredje elementet i vektorn myInt. Om du ska ha tillgång till både värde och adress är dessa två sätt som nybörjare bäst att använda.

 

T.ex myInt är adressen till första elementet i vektorn myInt, och myInt + 2 är adressen till det tredje elementet i vektorn myInt. Det är detta som jag tycker är så bra med C++, man kan göra nästan vad som helst och få samma kod.

 

T.ex *(myInt + 2) är värdet i det tredje elementet i vektorn myInt, och *(&(*(&myInt[2]))) är också värdet i det tredje elementet i vektorn myInt(detta sätt är typ helt onödigt med roligt att veta).

 

Bra att veta: När man skapar en variabel som en vektor hanteras den som en konstant pekare(den pekar hela tiden till samma minnesadress). Ett lätt sätt att få tillgång till värdet i det x:te elementet använder man koden myVector[x - 1].

Du syftar på att 32-bitarsoperativsystem använder 4bytes långa integers?

Vad ska man tro om 64-bitars OS? Att de också har 4 bytes?

 

De har 8 bytes stora integers!

 

Jag fattar inte varför du skriver

*(&(*(&myInt[2])))

Man brukar ju skriva

*(&(*(&(*(&(*(&(*(&(*(&myInt[2])))))))))))

Eller? Har jag fel?

 

Fält är ett annat ord man kan använda istället för vektor. Det kan man inte tro har något med matte, längd och riktning att göra...

 

Redigerat av PunkArne
Länk till kommentar
Dela på andra sajter

Gå med i konversationen

Du kan skriva nu och registrera dig senare. Om du har ett konto, logga in nu för att posta med ditt konto.

Gäst
Svara på det här ämnet...

×   Klistrade in som rich text.   Klistra in som vanlig text istället

  Endast 75 emojis är tillåtet.

×   Din länk har automatiskt inbäddats.   Visa som en länk istället

×   Ditt tidigare innehåll har återställts.   Rensa redigeraren

×   Du kan inte klistra in bilder direkt. Ladda upp eller infoga bilder från URL.

×
  • Skapa ny...