Bonjour à tous!

Présentement j'ai affaire à une classe qui implémente un tableau 1d dynamique, appelons-là Table1D. La classe a un comportement semblable à std::vector, sans toutefois être conforme à la STL pour les conteneurs, et en plus, elle est optimisée avec des intructions SSE2. Notamment, le constructeur par copie, ainsi que l'opérateur d'affectation, de Table1D utilise une version personnalisée de memcpy pour utiliser des instructions SSE2, et c'est sensiblement la même situation lorsque Table1D a besoin d'un plus grand espace (allocation d'un nouveau tableau aligné sur 16 octets, copie des éléments avec memcpy).

Mes problèmes avec cette classe :
- Très difficile d'utiliser les algorithmes générique de la STL.
- Un doute sur le comportement du constructeur par copie (et de l'opérateur d'affectation).
Il prend le pointeur de l'autre instance, ainsi que sa taille, et le copie directement avec un memcpy personnalisée (instructions SSE2).
En aucun cas le constructeur par copie des objets (si ce sont des objets que Table1D contient) n'est appelé.

Ce que je pourrais faire pour améliorer la classe Table1D :
- La rendre conforme à la STL.
- Une première solution serait de lui ajouter tous les méthodes qu'un conteneur de la STL se doit d'avoir.
- Une autre solution, serait d'utiliser std::vector, de lui faire un allocateur qui alloue de la mémoire alignée sur 16 octets. Je n'ai aucune idée comment gérer le constructeur par copie et la réallocation tout en utilisant des instructions SSE2.

Mes questions:
1. Utiliser la STL avec des instructions SSE2, est-ce possible ?
2. La pratique d'un constructeur par copie qui prendre le pointeur sur les données et qui fait tout simplement un memcpy (sans invoquer les constructeurs par copie des types d'objets qu'il contient), est-ce une bonne idée ?
3. Comment avoir le contrôle sur le constructeur par copie et la réallocation de std::vector ?


Que vous aillez une solution partielle, un petit bout de code ou n'importe quoi d'autre que vous jugez pertinent à dire, ne vous gênez surtout pas svp!


Merci,
Mathieu