Avatar billede zyxtem Nybegynder
26. august 2003 - 17:47 Der er 6 kommentarer og
1 løsning

Forståelse af vectorer

Hej eksperter

Jeg er i gang med at forsøge at lære noget om vectorer men der er en kode jeg ikke kan forstå

#include <iostream>
#include <cstdlib>
#include <vector>


using namespace std;

int main()
{
    int w[10]={1,2,3,4,5,6,7,8,9,0};
    vector<int> hej(w, w+10);  // Det er detteher jeg ikke fatter
   
    for (int i=0; i<hej.size(); i++)
    {
    cout<<hej[i];
    }
   
    system("pause");
    return 0;
}

Det jeg ikke forstår i linien er (w, w+10). I de andre eksempler angav man vectorens størelse i denne parantes men nu????????
Avatar billede soreno Praktikant
26. august 2003 - 17:52 #1
Du initialiserer vektoren med indeholdet af array w.

vector<int> hej(w, w+10);
w referere til adressen på første element.
w+10 til sidste element i arrayet.
Avatar billede soreno Praktikant
26. august 2003 - 17:57 #2
Måske dette eksempel er mere sigende:

#include <iostream>
#include <vector>

using namespace std;

int main(int argc, char **argv)
{
    vector<int> vect1;
    for(int i=0;i<10;i++)
    {
        vect1.push_back(i);
    }

    vector<int> vect2(vect1.begin(), vect1.end());
    for(int i=0;i<10;i++)
    {
        cout << vect2.at(i) << endl;
    }

    return 0;
}



Vektor 2 bliver initialiseret med indholdet af vektor 1.
Avatar billede soreno Praktikant
26. august 2003 - 18:03 #3
Du kan finde lidt info om konstruktørerne til en vector her:
http://www.fredosaurus.com/notes-cpp/stl/header-vector.html
Avatar billede zyxtem Nybegynder
26. august 2003 - 18:49 #4
Tror jeg har forstået det. Altså med w giver man vectoren en reffarence og med w+10 fortæller man den at den skal slutte 10 længere fremme i arrayet w[9] i mit tilfælde. Hvis der havde stået w+9 så ville det være w[8]...
  Har jeg forstået det rigtigt??
Avatar billede soreno Praktikant
26. august 2003 - 18:58 #5
Ja.

Når du angiver et array:
int w[10]

Vil
w være en pointer til første element.

F.eks. kan du udskrive første element med:
cout << *w;

Når du skriver +10 betyder det
adressen på første element + 10 elementer (int).
Avatar billede tosssen Nybegynder
26. august 2003 - 19:05 #6
Man kan måske lige indskyde at w+10 i eksemplet ikke er adressen på array'ets sidste element, men derimod adressen på elementet efter det sidste ;-) Det er almindelig STL praksis at bruge adressen på elementet efter det sidste.
Avatar billede zyxtem Nybegynder
26. august 2003 - 19:19 #7
Tak for forklaringerne..
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester