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 :

dico de string et vector de tableau


Sujet :

C++

  1. #1
    Membre �clair�

    Homme Profil pro
    d�veloppeur � la maison
    Inscrit en
    Septembre 2006
    Messages
    411
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn et Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : d�veloppeur � la maison

    Informations forums :
    Inscription : Septembre 2006
    Messages : 411
    Billets dans le blog
    16
    Par d�faut dico de string et vector de tableau
    bonjour,

    cette ligne se compile bien:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    std::map<std::string,std::vector<int[6]>>vect_de_tab;
    comment exploite-t-on ce dico?

    j'ai essay�:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #include <vector>
    #include <string>
    #include <map>
     
    int main(){
      std::map<std::string,std::vector<int[6]>>vect_de_tab;
      int T[6]={1,2,3,4,5,6};
      vect_de_tab["Mo"].push_back(T);
      return 0;
    }
    �a donne:
    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
    In file included from /usr/include/x86_64-linux-gnu/c++/12/bits/c++allocator.h:33,
                     from /usr/include/c++/12/bits/allocator.h:46,
                     from /usr/include/c++/12/vector:61,
                     from main.cpp:1:
    /usr/include/c++/12/bits/new_allocator.h: In instantiation of ‘void std::__new_allocator<_Tp>::construct(_Up*, _Args&& ...) [with _Up = int [6]; _Args = {const int (&)[6]}; _Tp = int [6]]’:
    /usr/include/c++/12/bits/alloc_traits.h:516:17:   required from ‘static void std::allocator_traits<std::allocator<_Tp1> >::construct(allocator_type&, _Up*, _Args&& ...) [with _Up = int [6]; _Args = {const int (&)[6]}; _Tp = int [6]; allocator_type = std::allocator<int [6]>]’
    /usr/include/c++/12/bits/stl_vector.h:1281:30:   required from ‘void std::vector<_Tp, _Alloc>::push_back(const value_type&) [with _Tp = int [6]; _Alloc = std::allocator<int [6]>; value_type = int [6]]’
    main.cpp:8:30:   required from here
    /usr/include/c++/12/bits/new_allocator.h:175:11: error: parenthesized initializer in array new
      175 |         { ::new((void *)__p) _Up(std::forward<_Args>(__args)...); }
          |           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /usr/include/c++/12/bits/new_allocator.h: In instantiation of ‘void std::__new_allocator<_Tp>::destroy(_Up*) [with _Up = int [6]; _Tp = int [6]]’:
    /usr/include/c++/12/bits/alloc_traits.h:535:15:   required from ‘static void std::allocator_traits<std::allocator<_Tp1> >::destroy(allocator_type&, _Up*) [with _Up = int [6]; _Tp = int [6]; allocator_type = std::allocator<int [6]>]’
    /usr/include/c++/12/bits/vector.tcc:501:28:   required from ‘void std::vector<_Tp, _Alloc>::_M_realloc_insert(iterator, _Args&& ...) [with _Args = {const int (&)[6]}; _Tp = int [6]; _Alloc = std::allocator<int [6]>; iterator = std::vector<int [6]>::iterator]’
    /usr/include/c++/12/bits/stl_vector.h:1287:21:   required from ‘void std::vector<_Tp, _Alloc>::push_back(const value_type&) [with _Tp = int [6]; _Alloc = std::allocator<int [6]>; value_type = int [6]]’
    main.cpp:8:30:   required from here
    /usr/include/c++/12/bits/new_allocator.h:181:17: error: request for member ‘~int [6]’ in ‘* __p’, which is of non-class type ‘int [6]181 |         { __p->~_Up(); }
          |           ~~~~~~^~~
    In file included from /usr/include/c++/12/vector:63:
    /usr/include/c++/12/bits/stl_uninitialized.h: In instantiation of ‘constexpr bool std::__check_constructible() [with _ValueType = int [6]; _Tp = int (&&)[6]]’:
    /usr/include/c++/12/bits/stl_uninitialized.h:182:4:   required from ‘_ForwardIterator std::uninitialized_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = move_iterator<int (*)[6]>; _ForwardIterator = int (*)[6]]’
    /usr/include/c++/12/bits/stl_uninitialized.h:372:37:   required from ‘_ForwardIterator std::__uninitialized_copy_a(_InputIterator, _InputIterator, _ForwardIterator, allocator<_Tp>&) [with _InputIterator = move_iterator<int (*)[6]>; _ForwardIterator = int (*)[6]; _Tp = int [6]]’
    /usr/include/c++/12/bits/stl_uninitialized.h:397:2:   required from ‘_ForwardIterator std::__uninitialized_move_if_noexcept_a(_InputIterator, _InputIterator, _ForwardIterator, _Allocator&) [with _InputIterator = int (*)[6]; _ForwardIterator = int (*)[6]; _Allocator = allocator<int [6]>]’
    /usr/include/c++/12/bits/vector.tcc:487:3:   required from ‘void std::vector<_Tp, _Alloc>::_M_realloc_insert(iterator, _Args&& ...) [with _Args = {const int (&)[6]}; _Tp = int [6]; _Alloc = std::allocator<int [6]>; iterator = std::vector<int [6]>::iterator]’
    /usr/include/c++/12/bits/stl_vector.h:1287:21:   required from ‘void std::vector<_Tp, _Alloc>::push_back(const value_type&) [with _Tp = int [6]; _Alloc = std::allocator<int [6]>; value_type = int [6]]’
    main.cpp:8:30:   required from here
    /usr/include/c++/12/bits/stl_uninitialized.h:90:56: error: static assertion failed: result type must be constructible from input type
       90 |       static_assert(is_constructible<_ValueType, _Tp>::value,
          |                                                        ^~~~~
    /usr/include/c++/12/bits/stl_uninitialized.h:90:56: note: ‘std::integral_constant<bool, false>::value’ evaluates to false
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #include <vector>
    #include <string>
    #include <map>
     
    int main(){
      std::map<std::string,std::vector<int[6]>>vect_de_tab;
      vect_de_tab["Mo"][0]=1;
      return 0;
    }
    �a donne:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    main.cpp: In function ‘int main()’:
    main.cpp:8:23: error: incompatible types in assignment of ‘int’ to ‘__gnu_cxx::__alloc_traits<std::allocator<int [6]>, int [6]>::value_type’ {aka ‘int [6]}
        8 |   vect_de_tab["Mo"][0]=1;
    quelqu'un a une id�e?

  2. #2
    Membre �clair�

    Homme Profil pro
    d�veloppeur � la maison
    Inscrit en
    Septembre 2006
    Messages
    411
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn et Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : d�veloppeur � la maison

    Informations forums :
    Inscription : Septembre 2006
    Messages : 411
    Billets dans le blog
    16
    Par d�faut
    �a marche avec �a:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    vect_de_tab["Mo"][0][0]=1;

  3. #3
    Membre �clair�

    Homme Profil pro
    d�veloppeur � la maison
    Inscrit en
    Septembre 2006
    Messages
    411
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn et Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : d�veloppeur � la maison

    Informations forums :
    Inscription : Septembre 2006
    Messages : 411
    Billets dans le blog
    16
    Par d�faut
    non �a ne marche pas:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #include <vector>
    #include <string>
    #include <map>
     
    int main(){
      std::map<std::string,std::vector<int[6]>>vect_de_tab;
      vect_de_tab["Mo"][0][0]=1;
      vect_de_tab["Mo"][0][1]=3;
      return 0;
    }
    Erreur de segmentation


    comment exploiter cette donn�e?

  4. #4
    Membre �clair�

    Homme Profil pro
    d�veloppeur � la maison
    Inscrit en
    Septembre 2006
    Messages
    411
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn et Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : d�veloppeur � la maison

    Informations forums :
    Inscription : Septembre 2006
    Messages : 411
    Billets dans le blog
    16
    Par d�faut
    �a aussi �a ne marche pas:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #include <vector>
    #include <string>
    #include <map>
     
    int main(){
      int T[6]={1,2,3,4,5,6};
      std::vector<int[6]>vect2;
      vect2.push_back(T);
      return 0;
    }
    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
    In file included from /usr/include/x86_64-linux-gnu/c++/12/bits/c++allocator.h:33,
                     from /usr/include/c++/12/bits/allocator.h:46,
                     from /usr/include/c++/12/vector:61,
                     from main.cpp:1:
    /usr/include/c++/12/bits/new_allocator.h: In instantiation of ‘void std::__new_allocator<_Tp>::construct(_Up*, _Args&& ...) [with _Up = int [6]; _Args = {const int (&)[6]}; _Tp = int [6]]’:
    /usr/include/c++/12/bits/alloc_traits.h:516:17:   required from ‘static void std::allocator_traits<std::allocator<_Tp1> >::construct(allocator_type&, _Up*, _Args&& ...) [with _Up = int [6]; _Args = {const int (&)[6]}; _Tp = int [6]; allocator_type = std::allocator<int [6]>]’
    /usr/include/c++/12/bits/stl_vector.h:1281:30:   required from ‘void std::vector<_Tp, _Alloc>::push_back(const value_type&) [with _Tp = int [6]; _Alloc = std::allocator<int [6]>; value_type = int [6]]’
    main.cpp:8:18:   required from here
    /usr/include/c++/12/bits/new_allocator.h:175:11: error: parenthesized initializer in array new
      175 |         { ::new((void *)__p) _Up(std::forward<_Args>(__args)...); }
          |           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /usr/include/c++/12/bits/new_allocator.h: In instantiation of ‘void std::__new_allocator<_Tp>::destroy(_Up*) [with _Up = int [6]; _Tp = int [6]]’:
    /usr/include/c++/12/bits/alloc_traits.h:535:15:   required from ‘static void std::allocator_traits<std::allocator<_Tp1> >::destroy(allocator_type&, _Up*) [with _Up = int [6]; _Tp = int [6]; allocator_type = std::allocator<int [6]>]’
    /usr/include/c++/12/bits/vector.tcc:501:28:   required from ‘void std::vector<_Tp, _Alloc>::_M_realloc_insert(iterator, _Args&& ...) [with _Args = {const int (&)[6]}; _Tp = int [6]; _Alloc = std::allocator<int [6]>; iterator = std::vector<int [6]>::iterator]’
    /usr/include/c++/12/bits/stl_vector.h:1287:21:   required from ‘void std::vector<_Tp, _Alloc>::push_back(const value_type&) [with _Tp = int [6]; _Alloc = std::allocator<int [6]>; value_type = int [6]]’
    main.cpp:8:18:   required from here
    /usr/include/c++/12/bits/new_allocator.h:181:17: error: request for member ‘~int [6]’ in ‘* __p’, which is of non-class type ‘int [6]181 |         { __p->~_Up(); }
          |           ~~~~~~^~~
    In file included from /usr/include/c++/12/vector:63:
    /usr/include/c++/12/bits/stl_uninitialized.h: In instantiation of ‘constexpr bool std::__check_constructible() [with _ValueType = int [6]; _Tp = int (&&)[6]]’:
    /usr/include/c++/12/bits/stl_uninitialized.h:182:4:   required from ‘_ForwardIterator std::uninitialized_copy(_InputIterator, _InputIterator, _ForwardIterator) [with _InputIterator = move_iterator<int (*)[6]>; _ForwardIterator = int (*)[6]]’
    /usr/include/c++/12/bits/stl_uninitialized.h:372:37:   required from ‘_ForwardIterator std::__uninitialized_copy_a(_InputIterator, _InputIterator, _ForwardIterator, allocator<_Tp>&) [with _InputIterator = move_iterator<int (*)[6]>; _ForwardIterator = int (*)[6]; _Tp = int [6]]’
    /usr/include/c++/12/bits/stl_uninitialized.h:397:2:   required from ‘_ForwardIterator std::__uninitialized_move_if_noexcept_a(_InputIterator, _InputIterator, _ForwardIterator, _Allocator&) [with _InputIterator = int (*)[6]; _ForwardIterator = int (*)[6]; _Allocator = allocator<int [6]>]’
    /usr/include/c++/12/bits/vector.tcc:487:3:   required from ‘void std::vector<_Tp, _Alloc>::_M_realloc_insert(iterator, _Args&& ...) [with _Args = {const int (&)[6]}; _Tp = int [6]; _Alloc = std::allocator<int [6]>; iterator = std::vector<int [6]>::iterator]’
    /usr/include/c++/12/bits/stl_vector.h:1287:21:   required from ‘void std::vector<_Tp, _Alloc>::push_back(const value_type&) [with _Tp = int [6]; _Alloc = std::allocator<int [6]>; value_type = int [6]]’
    main.cpp:8:18:   required from here
    /usr/include/c++/12/bits/stl_uninitialized.h:90:56: error: static assertion failed: result type must be constructible from input type
       90 |       static_assert(is_constructible<_ValueType, _Tp>::value,
          |                                                        ^~~~~
    /usr/include/c++/12/bits/stl_uninitialized.h:90:56: note: ‘std::integral_constant<bool, false>::value’ evaluates to false
    pourtant, ceci compile:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    #include <vector>
    #include <string>
    #include <map>
     
    int main(){
      std::vector<int[6]>vect2;
      return 0;
    }
    comment faire un vector de tableaux?

  5. #5
    Membre Expert
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Juin 2011
    Messages
    760
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, H�rault (Languedoc Roussillon)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 760
    Par d�faut
    Les tableaux C fonctionnent tr�s mal avec std::vector puisqu'ils ne sont ni d�pla�able ni copiable (entre autre). Du coup on les remplace par autre chose: std::array.

  6. #6
    Membre �clair�

    Homme Profil pro
    d�veloppeur � la maison
    Inscrit en
    Septembre 2006
    Messages
    411
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn et Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : d�veloppeur � la maison

    Informations forums :
    Inscription : Septembre 2006
    Messages : 411
    Billets dans le blog
    16
    Par d�faut
    merci pour la r�ponse, �a marche:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #include <vector>
    #include <string>
    #include <map>
    #include <array>
    int main(){
      std::vector<std::array<int,6>>vect;
      std::array<int,6>T={1,2,3,4,5,6};
      vect.push_back(T);
      return 0;
    }
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #include <vector>
    #include <string>
    #include <map>
    #include <array>
    int main(){
      std::map<std::string,std::vector<std::array<int,6>>>dico;
      std::array<int,6>T={1,2,3,4,5,6};
      dico["Mi"].push_back(T);
      return 0;
    }
    j'ai remarqu� que l'on peut faire aussi
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    std::array<int,3>T{1,2,3}
    on est pas oblig� de metre T=...

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Conversion vector en tableau String
    Par gdhugue1 dans le forum Collection et Stream
    R�ponses: 4
    Dernier message: 19/03/2007, 17h36
  2. Probl�me de cast en transformant un Vector en tableau de String
    Par montabou dans le forum Collection et Stream
    R�ponses: 2
    Dernier message: 11/11/2006, 18h58
  3. vector vs tableau
    Par harsh dans le forum SL & STL
    R�ponses: 4
    Dernier message: 14/07/2006, 03h15
  4. String diviser dans un tableau
    Par maminova dans le forum Collection et Stream
    R�ponses: 2
    Dernier message: 17/10/2005, 18h44
  5. [Collections] Conversion de Vector en tableau de String
    Par java_math dans le forum Collection et Stream
    R�ponses: 5
    Dernier message: 06/06/2004, 12h55

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