2010-12-09 9 views
2

Comment déclarer les constantes de carte std ie,Déclarant std :: carte constantes

int a[10] = { 1, 2, 3 ,4 }; 
std::map <int, int> MapType[5] = { }; 
int main() 
{ 
} 

Dans l'snippet au sujet, il est possible de donner des valeurs 1,2,3,4 à l'entier un tableau, de la même façon pour déclarer certaines valeurs MapType au lieu d'ajouter des valeurs dans la fonction main().

+1

Vous réalisez que vous déclarez un tableau de 5 'std :: map '? –

+0

@Fritschy: de cette façon, vous pouvez avoir moins d'éléments dans chaque carte et la recherche sera plus rapide ... ;-) –

+0

@Tony, havent pensé de cette façon, bon point;) –

Répondre

5

en utilisant seulement le 03 C++ routines standard, tenez compte:

#include <iostream> 
#include <map> 

typedef std::map<int, std::string> Map; 

const Map::value_type x[] = { std::make_pair(3, "three"), 
           std::make_pair(6, "six"), 
           std::make_pair(-2, "minus two"), 
           std::make_pair(4, "four") }; 

const Map m(x, x + sizeof x/sizeof x[0]); 

int main() 
{ 
    // print it out to show it works... 
    for (Map::const_iterator i = m.begin(); 
      i != m.end(); ++i) 
     std::cout << i->first << " -> " << i->second << '\n'; 
} 
+0

Merci ... Ça a marché. –

5

En C++ 0x, ce sera:

map<int, int> m = {{1,2}, {3,4}}; 
+0

In .mm (Objective-c + C++) file Il donne une erreur. –

2

J'étais tellement pris par la solution Boost.Assign à ce problème que j'ai écrit un billet de blog à ce sujet un an et demi (juste avant J'ai donné sur les blogs):

le code correspondant du poste était le suivant:

#include <boost/assign/list_of.hpp> 
#include <map> 

static std::map<int, int> amap = boost::assign::map_list_of 
    (0, 1) 
    (1, 1) 
    (2, 2) 
    (3, 3) 
    (4, 5) 
    (5, 8); 


int f(int x) 
{ 
    return amap[x]; 
} 
Questions connexes