abonnement Unibet Coolblue Bitvavo
pi_114976900
quote:
0s.gif Op donderdag 2 augustus 2012 00:18 schreef thabit het volgende:
Punt is dat je die vectors beter als reference kunt passen in de functie, maar daar zit de fout op zich niet. Die zit namelijk hier:
[ code verwijderd ]

Je hebt k en l verwisseld.
O M G :') . Bedankt!

Ik snap niet echt wat je bedoeld met die reference. Ik weet net pas wat pointers zijn, waar ik ook het nut nog niet echt van snap.
pi_114977332
quote:
0s.gif Op donderdag 2 augustus 2012 00:22 schreef thenxero het volgende:

[..]

O M G :') . Bedankt!

Ik snap niet echt wat je bedoeld met die reference. Ik weet net pas wat pointers zijn, waar ik ook het nut nog niet echt van snap.
Okee, dan zou ik me daar ook over inlezen, dit soort dingen zijn zo ongeveer hétgene waar C++ van aan elkaar hangt.

Dit is wel een goede bron voor de basics van C++ (aangenomen dat je enigszins met C bekend bent): http://www.drbio.cornell.(...)one-html/Frames.html
pi_114978512
quote:
0s.gif Op donderdag 2 augustus 2012 00:31 schreef thabit het volgende:

[..]

Okee, dan zou ik me daar ook over inlezen, dit soort dingen zijn zo ongeveer hétgene waar C++ van aan elkaar hangt.

Dit is wel een goede bron voor de basics van C++ (aangenomen dat je enigszins met C bekend bent): http://www.drbio.cornell.(...)one-html/Frames.html
Als hij nog niet zoveel van pointers weet dan is hij eigenlijk niet bekend met C :P
pi_114978518
quote:
0s.gif Op donderdag 2 augustus 2012 00:31 schreef thabit het volgende:

[..]

Okee, dan zou ik me daar ook over inlezen, dit soort dingen zijn zo ongeveer hétgene waar C++ van aan elkaar hangt.

Dit is wel een goede bron voor de basics van C++ (aangenomen dat je enigszins met C bekend bent): http://www.drbio.cornell.(...)one-html/Frames.html
Bedankt. Ik ben niet bekend met C. Het enige wat ik weet is alles wat hier staat, tot het over pointers gaat. Ik heb daarmee nu de eerste 10 problemen van PE opgelost, dus ik wil nu weer verder leren.
Ik zal het een keer gaan lezen en dan zie ik wel hoe ver ik kom.
  donderdag 2 augustus 2012 @ 13:08:39 #105
189216 netolk
maar dan andersom
pi_114992442
Voor een goede pointer uitleg kun je ook op youtube kijken dan moet je even zoeken naar pointer fun ik zit nu op mijn mobiel alleen dan doet youtube raar als ik de link van het filmpje wil. Een reference is eigenlijk een soort pointer, hij wijst naar een bepaald object die je vervolgens kan bewerken (is heel handig als functies bijvoorbeeld wat toe moeten voegen aan een vector)
Beware of the Raping Zebra's
pi_114995032
Een reference is een pointer waarbij je in de notatie het sterretje weglaat. Andere verschillen: een reference kan niet 0 zijn, moet direct geïnitialiseerd worden, en kan daarna niet veranderd worden.
pi_114995536
Een toepassing van references in jouw code zou bijvoorbeeld kunnen zijn dat je
1vector<int> vereniging(vector<int> a, vector<int> b)
vervangt door
1vector<int> vereniging(vector<int>& a, vector<int>& b)
In het bovenste geval worden er bij het doorgeven van de vectoren copy-constructors op a en b uitgevoerd, en destructors bij het verlaten van de functie. In het onderste geval worden er references naar reeds bestaande vectoren doorgegeven, en hoeven er op a en b geen constructors of destructors te worden uitgevoerd.
pi_114995621
quote:
0s.gif Op donderdag 2 augustus 2012 13:57 schreef thabit het volgende:
[...] een reference kan niet 0 zijn [...]
1int const &a = 0;
:)
"Slechts diegene mag slopen die iets beters kan bouwen."
pi_114995928
quote:
0s.gif Op donderdag 2 augustus 2012 14:10 schreef GS42 het volgende:

[..]
[ code verwijderd ]

:)
Okee, okee, maar de C++ standaard definieert geen null references, in tegenstelling tot Java, waar references null by default zijn en ook kunnen veranderen.
pi_115007412
quote:
0s.gif Op donderdag 2 augustus 2012 14:08 schreef thabit het volgende:
Een toepassing van references in jouw code zou bijvoorbeeld kunnen zijn dat je
[ code verwijderd ]

vervangt door
[ code verwijderd ]

In het bovenste geval worden er bij het doorgeven van de vectoren copy-constructors op a en b uitgevoerd, en destructors bij het verlaten van de functie. In het onderste geval worden er references naar reeds bestaande vectoren doorgegeven, en hoeven er op a en b geen constructors of destructors te worden uitgevoerd.
Neem dan ook gelijk een constant reference, is wat netter. :)
pi_115022393
quote:
0s.gif Op donderdag 2 augustus 2012 14:08 schreef thabit het volgende:
Een toepassing van references in jouw code zou bijvoorbeeld kunnen zijn dat je
[ code verwijderd ]

vervangt door
[ code verwijderd ]

In het bovenste geval worden er bij het doorgeven van de vectoren copy-constructors op a en b uitgevoerd, en destructors bij het verlaten van de functie. In het onderste geval worden er references naar reeds bestaande vectoren doorgegeven, en hoeven er op a en b geen constructors of destructors te worden uitgevoerd.
Wordt de code daar sneller door? Of wat zijn anders de voordelen?
pi_115022441
quote:
0s.gif Op donderdag 2 augustus 2012 22:27 schreef thenxero het volgende:

[..]

Wordt de code daar sneller door?
In het algemeen wel, al kan het nooit kwaad om het te testen.
pi_115025456
quote:
0s.gif Op donderdag 2 augustus 2012 13:08 schreef netolk het volgende:
Voor een goede pointer uitleg kun je ook op youtube kijken dan moet je even zoeken naar pointer fun

_O-
pi_115028537
in C++ heb je trouwens iets veel beters dan malloc :)

Daar kan je gewoon dit doen:
int *iptr = new int;

ipv
int *iptr = malloc(sizeof(int));
pi_115030810
quote:
0s.gif Op donderdag 2 augustus 2012 23:58 schreef t4rt4rus het volgende:
in C++ heb je trouwens iets veel beters dan malloc :)

Daar kan je gewoon dit doen:
int *iptr = new int;

ipv
int *iptr = malloc(sizeof(int));
Ja zo heb ik het ook geleerd. Dat malloc vond ik al vaag, maar dat is dus voor C.
  vrijdag 3 augustus 2012 @ 01:00:28 #116
189216 netolk
maar dan andersom
pi_115031632
Ja er bestaat er ook een voor c++ het enige verschil is dat malloc word vervangen door new
Beware of the Raping Zebra's
  vrijdag 3 augustus 2012 @ 09:46:07 #117
314941 Ai_KaRaMBa
Eat my shorts!
pi_115038590
Let daarmee op dat je in C++ 2 soorten "free()" hebt!! Als je het verkeerd doet, krijg je memory leaks...

1
2
3
4
5
6
7
int *a = new int;
int *b = new int[10];

// ...

delete a;
delete[] b;

versus

1
2
3
4
5
6
7
int *a = (int*)malloc(sizeof(int));
int *b = (int*)malloc(sizeof(int)*10);

//...

free(a);
free(b);
pi_115038928
quote:
0s.gif Op vrijdag 3 augustus 2012 00:43 schreef thenxero het volgende:

[..]

Ja zo heb ik het ook geleerd. Dat malloc vond ik al vaag, maar dat is dus voor C.
Het is niet vaag. Het enigste wat het doet is memory alloceren voor waar de integer in geplaatst kan worden. Met sizeof(int) vraagt hij de grootte op van een integer in bytes. Met malloc reserveerd hij vervolgens dus die grootte.
  vrijdag 3 augustus 2012 @ 17:18:49 #119
189216 netolk
maar dan andersom
pi_115059480
Klopt idd alleen is new veel duidelijker en overzichtelijker in gebruik
Beware of the Raping Zebra's
pi_115059990
quote:
0s.gif Op vrijdag 3 augustus 2012 09:46 schreef Ai_KaRaMBa het volgende:
Let daarmee op dat je in C++ 2 soorten "free()" hebt!! Als je het verkeerd doet, krijg je memory leaks...
[ code verwijderd ]

versus
[ code verwijderd ]

Het nut daarvan begrijp ik nog niet echt...

En was het niet zo dat je delete[] bij alles kon gebruiken?
1
2
int *i = new int;
delete[] i;

Oh wacht is het mogelijk om dit te doen?
1
2
3
4
int *i = new int[4];
delete &i[3];
delete[] &i[1];
delete i;
pi_115060048
quote:
0s.gif Op vrijdag 3 augustus 2012 17:33 schreef t4rt4rus het volgende:

[..]

Het nut daarvan begrijp ik nog niet echt...

En was het niet zo dat je delete[] bij alles kon gebruiken?
[ code verwijderd ]

Oh wacht is het mogelijk om dit te doen?
[ code verwijderd ]

edit zo te zien niet...
Waar is die delete[] dan voor nodig? :P
Lijkt me dat er maar 1 geheugen block gereserveerd word en niet allemaal losse.
  vrijdag 3 augustus 2012 @ 17:38:55 #122
314941 Ai_KaRaMBa
Eat my shorts!
pi_115060176
De officiele verklaring is, dat er een andere destructor wordt aangeroepen. Maar eigenlijk begrijp ik zelf ook niet helemaal waarom daar een andere delete voor nodig is... (en waarom je de verkeerde delete wel kan gebruiken zonder een compile time / runtime waarschuwing)
pi_115060231
Ah wacht bedankt nu weet ik het weer. :)
delete[] called alle destructors delete niet.

Nog een vraagje... delete throws toch een exception als die faalt?
Ik heb een delete in try catch block en krijg gewoon runtime error, vaag.
pi_115063240
delete verwijdert alleen de int op plek i, delete[] verwijdert de hele array
pi_115063414
quote:
0s.gif Op vrijdag 3 augustus 2012 19:06 schreef thabit het volgende:
delete verwijdert alleen de int op plek i, delete[] verwijdert de hele array
Wat versta je onder verwijderen?

Volgens mij deallocaten delete en delete[] beide een array,
delete callt alleen de destructor van de eerste.

Of denk ik fout?
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')