Tableau de caractères comme une valeur en C++ carte

Je veux définir quelque chose comme

Map<int, char[5] > myMap;

La déclaration ci-dessus est accepté par le compilateur c++ et aucune erreur n'est levée, mais quand je fais quelque chose comme ceci

int main()
{
    char arr[5] ="sdf";
    map <int, char[5]> myMap;
    myMap.insert(pair<int, char[5]>(0,arr));
    return 0;
}

J'obtiens l'erreur:

In file included from /usr/include/c++/4.6/bits/stl_algobase.h:65:0,
                 from /usr/include/c++/4.6/bits/char_traits.h:41,
                 from /usr/include/c++/4.6/ios:41,
                 from /usr/include/c++/4.6/ostream:40,
                 from /usr/include/c++/4.6/iostream:40,
                 from charMap.cpp:1:
/usr/include/c++/4.6/bits/stl_pair.h: In constructor std::pair<_T1, _T2>::pair(const _T1&, const _T2&) [with _T1 = int, _T2 = char [5]]’:
charMap.cpp:9:42:   instantiated from here
/usr/include/c++/4.6/bits/stl_pair.h:104:31: error: array used as initializer
/usr/include/c++/4.6/bits/stl_pair.h: In constructor std::pair<_T1, _T2>::pair(const std::pair<_U1, _U2>&) [with _U1 = int, _U2 = char [5], _T1 = const int, _T2 = char [5]]’:
charMap.cpp:9:43:   instantiated from here
/usr/include/c++/4.6/bits/stl_pair.h:109:39: error: array used as initializer

Il est important pour moi de définir une taille fixe tableau de caractères, car il optimise mon flux réseau de l'opération. Est-il possible de le réaliser? Je ne veux pas utiliser char * ou std::string.

Avez-vous essayé de définir un struct qui contient un char[5]?
Pourquoi ne pas char * ou mieux encore string?
oui, j'ai été capable de le faire en faisant un struct 🙂 Mais pouvez-vous svp m'expliquer pourquoi en faire une structure de travail et non le char[5] lui-même ?
Voir cette question Pourquoi déclarer une structure qui contient uniquement un tableau
Les réponses sont grands, mais personne n'a dit pourquoi une telle construction n'est pas possible en c++, ou si le compilateur c++ accepte la déclaration, comment l'utiliser? Simplement à partir d'un point de vue théorique.

OriginalL'auteur Master Oogway | 2012-07-16