ekorniminator Skrevet 11. mars 2007 Del Skrevet 11. mars 2007 vector< vector<int> > info; 1. Dette er mulig sant? (Det kompilerer i hvertfall..) 2. Hvordan kaller jeg verdiene her? Kunne alltids skrevet en funskjon som itererer seg gjennom info frem til riktig vector for så å kalle riktig intege, men jeg satser på at det går an å gjøre på en enklere måte Lenke til kommentar
rvsjoen Skrevet 12. mars 2007 Del Skrevet 12. mars 2007 vector< vector<int> > info; 1. Dette er mulig sant? (Det kompilerer i hvertfall..) Ja det er mulig 2. Hvordan kaller jeg verdiene her? Kunne alltids skrevet en funskjon som itererer seg gjennom info frem til riktig vector for så å kalle riktig intege, men jeg satser på at det går an å gjøre på en enklere måte 8131880[/snapback] (info.at(0)).at(0) bør vel gi deg første element i vektor nr 1 ? Lenke til kommentar
ekorniminator Skrevet 12. mars 2007 Forfatter Del Skrevet 12. mars 2007 kan du forklare litt nærmere hvorfor dette gir første element i første vektor? Lenke til kommentar
CoolBeer Skrevet 12. mars 2007 Del Skrevet 12. mars 2007 (endret) Dette kanskje hjelper deg litt på vei: #include <iostream> #include <vector> int main(void) { int teller; std::vector< std::vector<int> > twodimmatrix; twodimmatrix.push_back(std::vector<int>()); for (teller = 1; teller != 9; teller++) { twodimmatrix[0].push_back(teller); } for (teller = 0; teller != 8; teller++) { std::cout << twodimmatrix[0][teller] << std::endl; } return 0; } Egentlig ikkeno google kunne ha hjulpet deg med, menmen EDIT: Tab i koden var ikke forumet glad i nei.... Endret 12. mars 2007 av Caps_Lock_kf Lenke til kommentar
kjey Skrevet 12. mars 2007 Del Skrevet 12. mars 2007 Fordi typen av vectoren er vector. Det betyr at alle elementene i hovedvektoren er av type vector. For å hente det første elementet i begge må du først hente det første elementet i hovedvektoren, for så å hente det første elemementet i vectoren du har hentet fra hovedvectoren. Når man skriver info.at(0) henter du jo en vector, men når du igjen skriver .at(0) så henter du jo et element i vectoren du allerede har hentet opp. Hehe, blir litt vanskelig å forklare, men det er bare å tenke at du først henter et element av typen vector for så å bruke det man har hentet opp og hente opp en int. Lenke til kommentar
ekorniminator Skrevet 12. mars 2007 Forfatter Del Skrevet 12. mars 2007 Takk skal du ha kjey.. Det funker Man trenger forresten ikke parantesen rundt info.at() ettersom "." er venstregreier vet ikke hva det heter på norsk, men sånn at den bruker mest mulig av det som er til venstre og minst mulig av det til høyre.. Men en ting! hvor kommer at fra? vanligvis kaller man jo innholdet slik: info[0] Lenke til kommentar
Zolo Skrevet 12. mars 2007 Del Skrevet 12. mars 2007 Takk skal du ha kjey.. Det funker Man trenger forresten ikke parantesen rundt info.at() ettersom "." er venstregreier vet ikke hva det heter på norsk, men sånn at den bruker mest mulig av det som er til venstre og minst mulig av det til høyre.. Men en ting! hvor kommer at fra? vanligvis kaller man jo innholdet slik: info[0] 8137223[/snapback] info om vector: http://www.cppreference.com/cppvector/index.html Lenke til kommentar
ekorniminator Skrevet 12. mars 2007 Forfatter Del Skrevet 12. mars 2007 Takk, koden info[0][1] funker like bra som info.at(0).at(1) sett bort i fra det med sikkerheten da.. Men en ting, er ".at()" tregere å kalle en "[]" ? Lenke til kommentar
rvsjoen Skrevet 12. mars 2007 Del Skrevet 12. mars 2007 Takk, koden info[0][1] funker like bra som info.at(0).at(1) sett bort i fra det med sikkerheten da.. Men en ting, er ".at()" tregere å kalle en "[]" ? 8137322[/snapback] Denne tregheten er så ubetydelig at det er verdt den ekstra sikkerheten med bounds-checking. En exception er gull verdt når den kommer i stedet for en stack overflow Lenke til kommentar
ekorniminator Skrevet 12. mars 2007 Forfatter Del Skrevet 12. mars 2007 Så da er det god programmeringsvane å bruke .at(n) i steden altså? Pleier dere å gjøre det? Lenke til kommentar
rvsjoen Skrevet 12. mars 2007 Del Skrevet 12. mars 2007 Så da er det god programmeringsvane å bruke .at(n) i steden altså? Pleier dere å gjøre det? 8138498[/snapback] Ja. Det sparer det for mye frustrasjon den dagen du driter deg ut Lenke til kommentar
Dead_Rabbit Skrevet 12. mars 2007 Del Skrevet 12. mars 2007 Jeg pleier stort sett å bruke iteratorer, men når jeg først bruker indexing må jeg innrømme at jeg vanligvis bruker operator[], selv om dette kanskje ikke er foretrukket. Men, hvis man bruker operator[] fremfor at(), gjør det at man også kan bruke C-style arrays om man ønsker dette, og det kan jo noen ganger være en fordel. Men ja, det er god programmeringsvane å bruke at() fremfor operator[] med mindre man har noen god grunn til ikke å gjøre det. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå