IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Vecteur de tableau à 2 dimensions


Sujet :

C++

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 16
    Points : 11
    Points
    11
    Par défaut Vecteur de tableau à 2 dimensions
    Bonjour à tous,
    Je souhaiterai savoir comment déclarer et utiliser un vecteur à deux dimenensions. Je souhaite en effet stocker plusieurs GLfloat[][] pour ma programmation OpenGL.
    Voici comment j'ai essayé de déclarer mon vecteur:std::vector<GLfloat[100][2]> vPixels;J'ai une magnifique erreur de compilation dès que je j'essaye d'accéder à la structure:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    c:\program files (x86)\microsoft visual studio 10.0\vc\include\xutility(2514): error C2106: '='*: l'opérande gauche doit être une l-value
    c:\program files (x86)\microsoft visual studio 10.0\vc\include\xutility(2535)*: voir la référence à l'instanciation de la fonction modèle '_OutIt std::_Move<_InIt,_OutIt>(_InIt,_InIt,_OutIt,std::_Nonscalar_ptr_iterator_tag)' en cours de compilation
    with
    [
        _OutIt=float (*)[100][2],
        _InIt=float (*)[100][2]
    ]
    c:\program files (x86)\microsoft visual studio 10.0\vc\include\vector(1202)*: voir la référence à l'instanciation de la fonction modèle '_OutIt std::_Move<float(*)[100][2],float(*)[100][2]>(_InIt,_InIt,_OutIt)' en cours de compilation
    with
    [
        _OutIt=float (*)[100][2],
        _InIt=float (*)[100][2]
    ]
    c:\program files (x86)\microsoft visual studio 10.0\vc\include\vector(1190)*: lors de la compilation de la fonction membre 'std::_Vector_iterator<_Myvec> std::vector<_Ty>::erase(std::_Vector_const_iterator<_Myvec>,std::_Vector_const_iterator<_Myvec>)' de la classe modèle
    with
    [
        _Myvec=std::_Vector_val<float [100][2],std::allocator<float [100][2]>>,
        _Ty=GLfloat [100][2]
    ]
    i:\developppement\refactoring\displayagent\circle.cpp(26)*: voir la référence à l'instanciation de la classe modèle 'std::vector<_Ty>' en cours de compilation
    with
    [
        _Ty=GLfloat [100][2]
    ]
    Si quelqu'un peut me donner un coup de main ce serait très sympa!
    Merci,

    Greg

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Salut,
    Boost.MultiArray pour ne pas réinventer la roue.


    Si tu fais parti des (archaïques ) réticents à boost, tu peux (approximativement) réinventer la roue en enveloppant un tableau à une dimension dans une structure dédiée et utiliser l'opérateur d'appel () pour adresser un élément particulier : (exemple avec std::array mais très facilement adaptable pour un std::vector, bien sur tout cela suppose que toutes les lignes ont la même taille) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    template<typename T, size_t L, size_t C>
    struct matrix
    {
       typedef T& reference;
       typedef T const & c_reference;
     
     
       reference operator()(size_t line_, size_t column)
       {
          return data[line_*C + column];
       }
     
       c_reference operator()(size_t line_, size_t column)const
       {
          return data[line_*C + column];
       }
     
    private:
        std::array<T,L*C> data;
    };
    Ensuite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    matrix<Gfloat, 100, 2> m;
    m(1,1) = 12.;
    Ou si tu persistes dans ton vecteur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    std::vector<std::vector<GLfloat> > vPixels(100,std::vector<GLfloat>(2));

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 16
    Points : 11
    Points
    11
    Par défaut
    Merci pour ta réponse, j'ai testé les MultiArray et ca marche très bien.
    Cependant j'ai un souci lorsque je veux l'intégrer dans mon programme.
    Je déclare une multiarray dans mon header, dans la partie private:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    private:
    	boost::multi_array<GLfloat, 3> pixels;
    Puis lors dans mon implémentation cpp je fais ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    pixels = boost::multi_array<GLfloat, 3>(boost::extents[40][100][2]);
    et j'ai une erreur imbuvable qui ne me parle absolument pas ...
    J'ai essayé pas mal de chose mais là je bloque.
    Merci de votre aide.
    ++
    Greg

    PS: pour info la magnifique trace ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
     
    1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\xutility(2227): warning C4996: 'std::_Copy_impl': Function call with parameters that may be unsafe - this call relies on the caller to check that the passed values are correct. To disable this warning, use -D_SCL_SECURE_NO_WARNINGS. See documentation on how to use Visual C++ 'Checked Iterators'
    1>          c:\program files (x86)\microsoft visual studio 10.0\vc\include\xutility(2212)*: voir la déclaration de 'std::_Copy_impl'
    1>          c:\program files (x86)\boost\boost_1_47\boost\multi_array\extent_gen.hpp(49)*: voir la référence à l'instanciation de la fonction modèle '_OutIt std::copy<const boost::detail::multi_array::extent_range<Extent,SizeType>*,boost::detail::multi_array::extent_range<Extent,SizeType>*>(_InIt,_InIt,_OutIt)' en cours de compilation
    1>          with
    1>          [
    1>              _OutIt=boost::detail::multi_array::extent_range<boost::detail::multi_array::extent_gen<NumRanges>::index,boost::detail::multi_array::extent_gen<NumRanges>::size_type> ,
    1>              Extent=boost::detail::multi_array::extent_gen<NumRanges>::index,
    1>              SizeType=boost::detail::multi_array::extent_gen<NumRanges>::size_type,
    1>              _InIt=const boost::detail::multi_array::extent_range<boost::detail::multi_array::extent_gen<NumRanges>::index,boost::detail::multi_array::extent_gen<NumRanges>::size_type> 
    1>          ]
    1>          c:\program files (x86)\boost\boost_1_47\boost\multi_array\extent_gen.hpp(46)*: lors de la compilation de la fonction membre 'boost::detail::multi_array::extent_gen<NumRanges>::extent_gen(const boost::detail::multi_array::extent_gen<0> &,const boost::detail::multi_array::extent_gen<NumRanges>::range &)' de la classe modèle
    1>          with
    1>          [
    1>              NumRanges=1
    1>          ]
    1>          i:\developppement\refactoring\displayagent\circle.cpp(35)*: voir la référence à l'instanciation de la classe modèle 'boost::detail::multi_array::extent_gen<NumRanges>' en cours de compilation
    1>          with
    1>          [
    1>              NumRanges=1
    1>          ]
    1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\xutility(2801): warning C4996: 'std::_Fill_n': Function call with parameters that may be unsafe - this call relies on the caller to check that the passed values are correct. To disable this warning, use -D_SCL_SECURE_NO_WARNINGS. See documentation on how to use Visual C++ 'Checked Iterators'
    1>          c:\program files (x86)\microsoft visual studio 10.0\vc\include\xutility(2787)*: voir la déclaration de 'std::_Fill_n'
    1>          c:\program files (x86)\boost\boost_1_47\boost\multi_array\multi_array_ref.hpp(340)*: voir la référence à l'instanciation de la fonction modèle 'void std::fill_n<__w64 int*,size_t,int>(_OutIt,_Diff,const _Ty &)' en cours de compilation
    1>          with
    1>          [
    1>              _OutIt=__w64 int *,
    1>              _Diff=size_t,
    1>              _Ty=int
    1>          ]
    1>          c:\program files (x86)\boost\boost_1_47\boost\multi_array\multi_array_ref.hpp(328)*: lors de la compilation de la fonction membre 'boost::const_multi_array_ref<T,NumDims,TPtr>::const_multi_array_ref(TPtr,const boost::general_storage_order<3> &,__w64 const int *,const unsigned int *)' de la classe modèle
    1>          with
    1>          [
    1>              T=GLfloat,
    1>              NumDims=3,
    1>              TPtr=GLfloat *
    1>          ]
    1>          c:\program files (x86)\boost\boost_1_47\boost\multi_array\multi_array_ref.hpp(417)*: voir la référence à l'instanciation de la classe modèle 'boost::const_multi_array_ref<T,NumDims,TPtr>' en cours de compilation
    1>          with
    1>          [
    1>              T=GLfloat,
    1>              NumDims=3,
    1>              TPtr=GLfloat *
    1>          ]
    1>          c:\program files (x86)\boost\boost_1_47\boost\multi_array.hpp(113)*: voir la référence à l'instanciation de la classe modèle 'boost::multi_array_ref<T,NumDims>' en cours de compilation
    1>          with
    1>          [
    1>              T=GLfloat,
    1>              NumDims=3
    1>          ]
    1>          i:\developppement\refactoring\displayagent\circle.h(17)*: voir la référence à l'instanciation de la classe modèle 'boost::multi_array<T,NumDims>' en cours de compilation
    1>          with
    1>          [
    1>              T=GLfloat,
    1>              NumDims=3
    1>          ]
    1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\xutility(2801): warning C4996: 'std::_Fill_n': Function call with parameters that may be unsafe - this call relies on the caller to check that the passed values are correct. To disable this warning, use -D_SCL_SECURE_NO_WARNINGS. See documentation on how to use Visual C++ 'Checked Iterators'
    1>          c:\program files (x86)\microsoft visual studio 10.0\vc\include\xutility(2787)*: voir la déclaration de 'std::_Fill_n'
    1>          c:\program files (x86)\boost\boost_1_47\boost\array.hpp(186)*: voir la référence à l'instanciation de la fonction modèle 'void std::fill_n<bool*,boost::array<T,N>::size_type,T>(_OutIt,_Diff,const _Ty &)' en cours de compilation
    1>          with
    1>          [
    1>              T=bool,
    1>              N=3,
    1>              _OutIt=bool *,
    1>              _Diff=boost::array<bool,3>::size_type,
    1>              _Ty=bool
    1>          ]
    1>          c:\program files (x86)\boost\boost_1_47\boost\array.hpp(185)*: lors de la compilation de la fonction membre 'void boost::array<T,N>::fill(const T &)' de la classe modèle
    1>          with
    1>          [
    1>              T=bool,
    1>              N=3
    1>          ]
    1>          c:\program files (x86)\boost\boost_1_47\boost\multi_array\storage_order.hpp(76)*: voir la référence à l'instanciation de la classe modèle 'boost::array<T,N>' en cours de compilation
    1>          with
    1>          [
    1>              T=bool,
    1>              N=3
    1>          ]
    1>          c:\program files (x86)\boost\boost_1_47\boost\multi_array\multi_array_ref.hpp(353)*: voir la référence à l'instanciation de la classe modèle 'boost::general_storage_order<NumDims>' en cours de compilation
    1>          with
    1>          [
    1>              NumDims=3
    1>          ]
    1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\xutility(3051): warning C4996: 'std::_Equal1': Function call with parameters that may be unsafe - this call relies on the caller to check that the passed values are correct. To disable this warning, use -D_SCL_SECURE_NO_WARNINGS. See documentation on how to use Visual C++ 'Checked Iterators'
    1>          c:\program files (x86)\microsoft visual studio 10.0\vc\include\xutility(3036)*: voir la déclaration de 'std::_Equal1'
    1>          c:\program files (x86)\boost\boost_1_47\boost\multi_array\multi_array_ref.hpp(486)*: voir la référence à l'instanciation de la fonction modèle 'bool std::equal<const unsigned int*,const unsigned int*>(_InIt1,_InIt1,_InIt2)' en cours de compilation
    1>          with
    1>          [
    1>              _InIt1=const unsigned int *,
    1>              _InIt2=const unsigned int *
    1>          ]
    1>          c:\program files (x86)\boost\boost_1_47\boost\multi_array.hpp(377)*: voir la référence à l'instanciation de la fonction modèle 'boost::multi_array_ref<T,NumDims> &boost::multi_array_ref<T,NumDims>::operator =<boost::multi_array<T,3>>(const ConstMultiArray &)' en cours de compilation
    1>          with
    1>          [
    1>              T=GLfloat,
    1>              NumDims=3,
    1>              ConstMultiArray=boost::multi_array<GLfloat,3>
    1>          ]
    1>          c:\program files (x86)\boost\boost_1_47\boost\multi_array.hpp(375)*: lors de la compilation de la fonction membre 'boost::multi_array<T,NumDims> &boost::multi_array<T,NumDims>::operator =(const boost::multi_array<T,NumDims> &)' de la classe modèle
    1>          with
    1>          [
    1>              T=GLfloat,
    1>              NumDims=3
    1>          ]
    1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\xutility(2227): warning C4996: 'std::_Copy_impl': Function call with parameters that may be unsafe - this call relies on the caller to check that the passed values are correct. To disable this warning, use -D_SCL_SECURE_NO_WARNINGS. See documentation on how to use Visual C++ 'Checked Iterators'
    1>          c:\program files (x86)\microsoft visual studio 10.0\vc\include\xutility(2212)*: voir la déclaration de 'std::_Copy_impl'
    1>          c:\program files (x86)\boost\boost_1_47\boost\multi_array\multi_array_ref.hpp(489)*: voir la référence à l'instanciation de la fonction modèle '_OutIt std::copy<boost::detail::multi_array::array_iterator<T,TPtr,NumDims,Reference>,boost::detail::multi_array::array_iterator<T,T *,NumDims,boost::detail::multi_array::sub_array<T,2>>>(_InIt,_InIt,_OutIt)' en cours de compilation
    1>          with
    1>          [
    1>              _OutIt=boost::detail::multi_array::array_iterator<GLfloat,GLfloat *,boost::mpl::size_t<3>,boost::detail::multi_array::sub_array<GLfloat,2>>,
    1>              T=GLfloat,
    1>              TPtr=const GLfloat *,
    1>              NumDims=boost::mpl::size_t<3>,
    1>              Reference=boost::detail::multi_array::const_sub_array<GLfloat,2>,
    1>              _InIt=boost::detail::multi_array::array_iterator<GLfloat,const GLfloat *,boost::mpl::size_t<3>,boost::detail::multi_array::const_sub_array<GLfloat,2>>
    1>          ]
    1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\xutility(2216): error C2665: 'std::_Copy_impl'*: aucune des 2 surcharges n'a pu convertir tous les types d'arguments
    1>          c:\program files (x86)\microsoft visual studio 10.0\vc\include\xutility(2182): peut être '_OutIt std::_Copy_impl<_InIt,_OutIt>(_InIt,_InIt,_OutIt,std::input_iterator_tag,std::output_iterator_tag)'
    1>          with
    1>          [
    1>              _OutIt=boost::detail::multi_array::array_iterator<GLfloat,GLfloat *,boost::mpl::size_t<3>,boost::detail::multi_array::sub_array<GLfloat,2>>,
    1>              _InIt=boost::detail::multi_array::array_iterator<GLfloat,const GLfloat *,boost::mpl::size_t<3>,boost::detail::multi_array::const_sub_array<GLfloat,2>>
    1>          ]
    1>          c:\program files (x86)\microsoft visual studio 10.0\vc\include\xutility(2191): ou       '_OutIt std::_Copy_impl<_InIt,_OutIt>(_InIt,_InIt,_OutIt,std::random_access_iterator_tag,std::random_access_iterator_tag)'
    1>          with
    1>          [
    1>              _OutIt=boost::detail::multi_array::array_iterator<GLfloat,GLfloat *,boost::mpl::size_t<3>,boost::detail::multi_array::sub_array<GLfloat,2>>,
    1>              _InIt=boost::detail::multi_array::array_iterator<GLfloat,const GLfloat *,boost::mpl::size_t<3>,boost::detail::multi_array::const_sub_array<GLfloat,2>>
    1>          ]
    1>          lors de la tentative de mise en correspondance de la liste des arguments '(boost::detail::multi_array::array_iterator<T,TPtr,NumDims,Reference>, boost::detail::multi_array::array_iterator<T,TPtr,NumDims,Reference>, boost::detail::multi_array::array_iterator<T,TPtr,NumDims,Reference>, boost::detail::iterator_category_with_traversal<Category,Traversal>, boost::detail::iterator_category_with_traversal<Category,Traversal>)'
    1>          with
    1>          [
    1>              T=GLfloat,
    1>              TPtr=const GLfloat *,
    1>              NumDims=boost::mpl::size_t<3>,
    1>              Reference=boost::detail::multi_array::const_sub_array<GLfloat,2>
    1>          ]
    1>          and
    1>          [
    1>              T=GLfloat,
    1>              TPtr=const GLfloat *,
    1>              NumDims=boost::mpl::size_t<3>,
    1>              Reference=boost::detail::multi_array::const_sub_array<GLfloat,2>
    1>          ]
    1>          and
    1>          [
    1>              T=GLfloat,
    1>              TPtr=GLfloat *,
    1>              NumDims=boost::mpl::size_t<3>,
    1>              Reference=boost::detail::multi_array::sub_array<GLfloat,2>
    1>          ]
    1>          and
    1>          [
    1>              Category=std::input_iterator_tag,
    1>              Traversal=boost::random_access_traversal_tag
    1>          ]
    1>          and
    1>          [
    1>              Category=std::input_iterator_tag,
    1>              Traversal=boost::random_access_traversal_tag
    1>          ]
    1>          c:\program files (x86)\microsoft visual studio 10.0\vc\include\xutility(2227)*: voir la référence à l'instanciation de la fonction modèle '_OutIt std::_Copy_impl<_Iter,_OutIt>(_InIt,_InIt,_OutIt,std::tr1::false_type)' en cours de compilation
    1>          with
    1>          [
    1>              _OutIt=boost::detail::multi_array::array_iterator<GLfloat,GLfloat *,boost::mpl::size_t<3>,boost::detail::multi_array::sub_array<GLfloat,2>>,
    1>              _Iter=boost::detail::multi_array::array_iterator<GLfloat,const GLfloat *,boost::mpl::size_t<3>,boost::detail::multi_array::const_sub_array<GLfloat,2>>,
    1>              _InIt=boost::detail::multi_array::array_iterator<GLfloat,const GLfloat *,boost::mpl::size_t<3>,boost::detail::multi_array::const_sub_array<GLfloat,2>>
    1>          ]
    1>          c:\program files (x86)\boost\boost_1_47\boost\multi_array\multi_array_ref.hpp(489)*: voir la référence à l'instanciation de la fonction modèle '_OutIt std::copy<boost::detail::multi_array::array_iterator<T,TPtr,NumDims,Reference>,boost::detail::multi_array::array_iterator<T,T *,NumDims,boost::detail::multi_array::sub_array<T,2>>>(_InIt,_InIt,_OutIt)' en cours de compilation
    1>          with
    1>          [
    1>              _OutIt=boost::detail::multi_array::array_iterator<GLfloat,GLfloat *,boost::mpl::size_t<3>,boost::detail::multi_array::sub_array<GLfloat,2>>,
    1>              T=GLfloat,
    1>              TPtr=const GLfloat *,
    1>              NumDims=boost::mpl::size_t<3>,
    1>              Reference=boost::detail::multi_array::const_sub_array<GLfloat,2>,
    1>              _InIt=boost::detail::multi_array::array_iterator<GLfloat,const GLfloat *,boost::mpl::size_t<3>,boost::detail::multi_array::const_sub_array<GLfloat,2>>
    1>          ]

  4. #4
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Effectivement.
    Je n'avais pas fait attention mais c'est un bug connu avec Visual 2010 ( laissez trainer un truc comme ça, c'est pas terrible de la part de boost). La discussion propose des patch il me semble.

  5. #5
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2011
    Messages : 84
    Points : 114
    Points
    114
    Par défaut
    Salut,

    Pour déclarer un vector 2D il faut faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    vector< vector <GLfloat> > vPixels[100][2]

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 16
    Points : 11
    Points
    11
    Par défaut
    Merci pour le lien, visiblement la compatibilité avec Visual Studio 10 laisse à désirer ... J'ai utilisé le workaround, la compilation est ok mais l'execution ko. Je laisse tomber, je passe temporairement par un tableau à 3 dimensions.
    Merci de votre aide.
    ++

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    Citation Envoyé par romanzo Voir le message
    Salut,

    Pour déclarer un vector 2D il faut faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    vector< vector <GLfloat> > vPixels[100][2]
    Sauf erreur de ma part, là tu déclares un tableau de 2 dimensions de vector de vector.
    Pour un vector 2D simplement std::vector< std::vector<Glfloat> > vexPixels; ou Glfloat aPixels[100][2] ou Glfloat** aPixels;, ce dernier cas nécessitant allocation dynamique et libération de mémoire.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  8. #8
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2011
    Messages : 84
    Points : 114
    Points
    114
    Par défaut
    Oui ce n'est pas bon autant pour moi
    Il faudrait faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::vector< std::vector<GLfloat> > vPixels(100, std::vector<GLfloat>(2));
    ou comme tu as dit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::vector< std::vector<GLfloat> > vPixels

Discussions similaires

  1. [Collections] lecture tableau 2 dimensions
    Par heloise dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 30/09/2004, 10h49
  2. [tableau à 2 dimensions] association String et float
    Par LoLoSS dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 12/07/2004, 10h53
  3. Tableau à n dimensions
    Par youb dans le forum MFC
    Réponses: 10
    Dernier message: 13/05/2004, 14h13
  4. Passage d'un tableau à deux dimensions
    Par karl3i dans le forum C
    Réponses: 3
    Dernier message: 20/10/2003, 14h50
  5. Réponses: 23
    Dernier message: 21/08/2003, 07h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo