2011-11-10 4 views
3

Je dois insérer sur la fin d'un vecteur, 2 éléments à chaque fois. Je me demandais si faire vector.insert (iter_first, iter_second) est plus rapide que faire vector.push_back (premier), puis vector.push_back (second)?quelle fonction est plus rapide push_back, insérer en C++

Peut-être une autre alternative serait de créer une structure comme ceci:

struct T{int a; int b;}; 
T t; 
t.a = first; 
t.b = second; 
X.push_back(t); 
+9

Rien de ce qui va vous affecter. Passez. –

+0

Vous ne devez pas structurer vos données en fonction de ce que certains disent être légèrement plus rapide. Utilisez ce qui a du sens. Si ces deux valeurs forment logiquement l'une de l'autre, il y a des chances que cela ait du sens en tant que structure, indépendamment de toute implication potentielle sur les performances. – delnan

+4

Profil et voir! –

Répondre

6

Si les deux éléments sont logiquement liés, alors vous utiliseriez une struct ou une classe. Si elles ne sont pas liées, ne les regroupez pas pour des raisons de performance.

Cela sent l'optimisation prématurée. Au lieu de cela, écrivez le code le plus clair à maintenir et laissez le compilateur générer le code pour vous. C'est ce qu'il y a là-bas. Considérez que le code facile à lire est facile à maintenir, et que le code facile à maintenir est facile à refactoriser et qu'il est moins susceptible d'avoir des bugs de performance subtils dus à des malentendus.

0

L'insertion à la fin d'un vecteur sera beaucoup plus rapide que l'insertion au milieu ou au début d'un vecteur.

Cela ne importe quand vous avez un grand vecteur , et/ou les constructeurs de copie de vos objets sont Incroyablement douloureux.

0

En pratique, push_back appellera insert, afin d'appeler push_back se termine deux fois par appeler insert deux fois. En pratique, cependant, si le code a été optimisé, je serais surpris qu'il fasse une différence de . Faites ce qui est logique, et optimisez plus tard si vous avez des problèmes de performance .

Questions connexes