Iterator problem..

Tags:    c++

<< < 12 > >>
Hey, er lige igang med et eller andet underligt program, men er støt på en fejl.. Kan ikke se hvad fejlen skulle være. Men den ligger i productsFunction..

Kode:

main.cpp
Fold kodeboks ind/udKode 


products.h
Fold kodeboks ind/udKode 


productsFunction.cpp
Fold kodeboks ind/udKode 


Log:
Fold kodeboks ind/udKode 


Tak på forhånd



Indlæg senest redigeret d. 10.09.2009 16:10 af Bruger #14212
>Jonas, man skal være meget varsom med at påstå at det ene eller andet er "hurtigere" end noget andet, i dit eksempel er der (sandsynligvis) ingen forskel, til gengæld er det ikke så let at læse (det er naturligvis kun min mening).


Det burde være hurtigere, i og med man ikke lave funktionskaldende begin() og end() for hver iteration i for-løkken, med mindre det selvfølgelig bliver optimeret ud af compileren.



med mindre det selvfølgelig bliver optimeret ud af compileren

Det er netop kernen i sagen, der er (sandsynligvis) ikke noget kald til nogen funktion.

Jeg har set mange forsøg på at lave optimeret kode, i langt de fleste tilfælde er besparelsen minimal (hvis der overhovedet er nogen) og som regel skyde man ved siden af.



>Jonas, man skal være meget varsom med at påstå at det ene eller andet er "hurtigere" end noget andet, i dit eksempel er der (sandsynligvis) ingen forskel, til gengæld er det ikke så let at læse (det er naturligvis kun min mening).


Det burde være hurtigere, i og med man ikke lave funktionskaldende begin() og end() for hver iteration i for-løkken, med mindre det selvfølgelig bliver optimeret ud af compileren.


Selv hvis begin() og end() bliver til funktionskald (de bliver sandsynligvis inlinet og bliver til en enkelt instruktion) så bliver begin() under alle omstændigheder kun kaldt én gang og altså ikke for hvert gennemløb.

Som Bertel siger, så er læsbar kode 99 ud af 100 gange langt vigtigere. Stol på din compiler til at lave den slags optimeringer.



<< < 12 > >>
t