Bonjour,

j'ai un code en C++ qui appelle du fortran. Le prototype de ma fonction fortran est :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
void maFonctionFortran(double *, int * n)
donc, via le C++, je fais

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
int size = x.size();
maFonctionFortran(&x[0], &size);
où x est un std::vector. Je n'ai encore jamais eu de soucis avec cette syntaxe.

Un collègue m'a dit que ce n'était pas bon car rien ne garantit que les éléments sont contigus en mémoire avec un std::vector. Tout ce que la norme garantit est un accès direct au ieme élément et que les protoypes des fonctions seront conservés (entre 2 compilo par exemple).

A-t-il raison ? J'étais persuadé que les éléments d'un std::vector étaient contigus en mémoire.

Merci d'avance de votre réponse.