Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1148 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Vector et pointeur

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Vector et pointeur

n°1970157
aze760
Posté le 01-03-2010 à 12:38:45  profilanswer
 

Hello a tous
 
Voila mon petit soucis j'ai une fonction qui utilise des pointeur  
fonction( double* Y, double** X, double* b, int lig, int col)
 
Je veux l'utiliser dans mon programme qui lui utilise la classe vector.
 
vector<double> vb(i);
vector<double> vY(i);
vector< vector< double > > vX(i,vector<double> ());
 
Et la question que vous voyez deja venir :
 
comment ou est il possible d'utiliser ma fonction avec mes vecteur sans tous refaire ?
 
Merci
 
j'ai pensé a double *Y= & vY(0) mais je bloque pour le double **X

mood
Publicité
Posté le 01-03-2010 à 12:38:45  profilanswer
 

n°1970177
Un Program​meur
Posté le 01-03-2010 à 13:50:39  profilanswer
 

La reponse est Non.


---------------
The truth is rarely pure and never simple (Oscar Wilde)
n°1970184
aze760
Posté le 01-03-2010 à 14:15:40  profilanswer
 

au moins c'est clair.  
Donc soit je refais la fonction avec les vectors soit je refais le prog soit je trasforme mes vects en tableau et je perds tout l interets des vectors ?
 
Merci en tout cas

n°1970189
theshockwa​ve
I work at a firm named Koslow
Posté le 01-03-2010 à 14:39:30  profilanswer
 

techniquement, tu pourrais toujours bricoler un tableau d'indirections vers les multiples vecteurs contenus dans le vecteur vX. Ce tableau d'indirection contiendrait donc vX.size() pointeurs vers les premières cases des tableaux. Mais c'est vraiment du bricolage


---------------
last.fm
n°1970190
Xavier_OM
Monarchiste régicide (fr quoi)
Posté le 01-03-2010 à 14:41:34  profilanswer
 

Un Programmeur a écrit :

La reponse est Non.


 
Normalement on a la garantie qu'un vector stocke ses éléments de façon continue.
Donc j'aurai tendance à dire que si une méthode attend un tableau (un pointeur sur premier élément), alors on peut lui filer l'adresse du premier élément du vector
 
du genre :

Code :
  1. const char arr[] = "1234567890";
  2. vector<char> vec(sizeof arr); 
  3. memcpy(&vec[0], arr, sizeof arr);  // copie des chars d'arr dans vec


 
 
Maintenant je peux me tromper, surtout qu'Un Programmeur est plutôt balèze en C++ :o


---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
n°1970193
Un Program​meur
Posté le 01-03-2010 à 14:48:45  profilanswer
 

Xavier, tu as raison pour un vector<> (la garantie n'est pas presente en C++98 mais a ete ajoutee dans un DR, peut-etre a temps pour C++03, peut-etre pas; j'ai le souvenir que c'est a temps pour vector ou string mais pas pour l'autre; on exclu aussi l'anomalie qu'est vector<bool> ).
 
Le probleme ici, c'est qu'il a un double** et passer sans reorganisation d'un vector<vector> a un double** ne donne pas le resultat attendu.


---------------
The truth is rarely pure and never simple (Oscar Wilde)
n°1970198
aze760
Posté le 01-03-2010 à 14:52:58  profilanswer
 

oui le problme était sur le double** merci de votre réponse, je redefinis mes fonction et et je me trimballerais avec les tailles
thanks

n°1970229
Joel F
Real men use unique_ptr
Posté le 01-03-2010 à 16:02:30  profilanswer
 

passe tes vector directement à ta fonction ??

n°1970402
shipjin
Posté le 01-03-2010 à 21:52:12  profilanswer
 

Sa a pas l air d' être le but


Message édité par shipjin le 01-03-2010 à 21:53:16
n°1970464
Joel F
Real men use unique_ptr
Posté le 02-03-2010 à 08:34:34  profilanswer
 

ça n'a pas l'air certes, mais c'est la façon propre de faire.
La seule justification, c'est que f serait une ofnction legacy dont il n'a pas le source.
 
En C++,on passe des tableaux par références de vector. Point. Sinon c'ets du C.

mood
Publicité
Posté le 02-03-2010 à 08:34:34  profilanswer
 

n°1970473
Xavier_OM
Monarchiste régicide (fr quoi)
Posté le 02-03-2010 à 09:27:10  profilanswer
 

Un Programmeur a écrit :

Xavier, tu as raison pour un vector<> (la garantie n'est pas presente en C++98 mais a ete ajoutee dans un DR, peut-etre a temps pour C++03, peut-etre pas; j'ai le souvenir que c'est a temps pour vector ou string mais pas pour l'autre; on exclu aussi l'anomalie qu'est vector<bool> ).
 
Le probleme ici, c'est qu'il a un double** et passer sans reorganisation d'un vector<vector> a un double** ne donne pas le resultat attendu.


 
Oki merci  :jap:


---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
n°1970522
Lan Wezel
Posté le 02-03-2010 à 12:05:48  profilanswer
 

Un Programmeur a écrit :

Xavier, tu as raison pour un vector<> (la garantie n'est pas presente en C++98 mais a ete ajoutee dans un DR, peut-etre a temps pour C++03, peut-etre pas; j'ai le souvenir que c'est a temps pour vector ou string mais pas pour l'autre; on exclu aussi l'anomalie qu'est vector<bool> ).
 
Le probleme ici, c'est qu'il a un double** et passer sans reorganisation d'un vector<vector> a un double** ne donne pas le resultat attendu.


 
Juste une petite parenthèse proche du sujet :
 
Quand tu dis "on exclu aussi l'anomalie qu'est vector<bool>", l'anomalie est bien qu'ils sont optimisé en utilisant des bits sur lesquelles on ne peut prendre de référence ?
(Je profite du sujet pour vérifier que l'erreur "invalid cast of an rvalue expression of type ‘std::_Bit_reference’ to type ‘bool&’" est bien due à cela)

n°1970528
Un Program​meur
Posté le 02-03-2010 à 12:38:16  profilanswer
 

C'est bien a cela que je faisais allusion.


---------------
The truth is rarely pure and never simple (Oscar Wilde)
n°1970529
Lan Wezel
Posté le 02-03-2010 à 12:41:55  profilanswer
 

Merci :)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Vector et pointeur

 

Sujets relatifs
[Crypto] TripleDES - Initialization vectorréférence et pointeur
bizarre equivalence pointeur /tableau !!!Pointeur de fichier en paramètre
initialisation d'un tableau de pointeurvector et thread safe
vector de pointeur sur classe polymorphiquepointeur sur std::vector<T>
Pointeur sur un élément d'un std::vector[C++] Comment associer un pointeur à vector<bool>?
Plus de sujets relatifs à : Vector et pointeur


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR