En raison de dépendances externes, je dois écrire certaines données dans un conteneur .Quand utiliser Eigen :: Vector vs std :: vector?
Cependant, il y a d'autres moments où je ne suis pas obligée d'utiliser en comme récipient, et je peux utiliser une norme std::vector<int>
Actuellement, j'ai Eigen
et std
vecteurs parsemés à travers mon code. La seule fois où je décide d'utiliser un std:vector
est quand je vais faire des insertions à la volée, depuis Redimensionnement et plus fastidieux est réintroduire (et peut-être cher informatiquement) que d'utiliser push_back(<value>)
Je voudrais être sûr que j'utilise l'un ou l'autre au bon moment, au lieu de choisir au hasard. Quelles sont les bonnes instances pour utiliser Eigen::Vector
au lieu de std::vector
?
La bibliothèque que j'utilise (libigl) ne suit pas cette prémisse. Je pense est destiné à rendre le cache plus convivial et la mémoire efficace. Existe-t-il des différences fondamentales dans la mémoire, la vitesse d'accès entre le vecteur Eigen et le vecteur std? (Je suis d'accord que la lisibilité est un grand plus) – Javier
@Javier Il est sûr de supposer que les méthodes que les deux fournissent sont écrites efficacement, ce qui signifie que chacun est fort sur toutes les méthodes qu'il fournit. Si nous parlons d'accès, cela devrait être efficace dans les deux cas. Si vous travaillez avec des données fragmentées, Eigen est plus efficace en mémoire, car il a une classe de vecteurs clairsemée. std :: vector stockera les données denses, étant consécutives. – Aziuth
Eigen implémente des opérations vectorisées sur ses structures de données. Donc, si vos données vont passer par des opérations mathématiques, Eigen est probablement ce que vous voulez. – daragua