Jag har en liten fråga som lyder såhär:
Vad är en vektor? :huh:
Jag håller på och tränar C++ men så står det massa grejer vectors(vektorer typ(?)).
Jag har en liten fråga som lyder såhär:
Vad är en vektor? :huh:
Jag håller på och tränar C++ men så står det massa grejer vectors(vektorer typ(?)).
Flyttar till Programmerings forumet.
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].
↗ till inläggetDu syftar på att 32-bitarsoperativsystem använder 4bytes långa integers?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].
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...
Vill du vara med i diskussionen?
Bli medlem Logga in