2015-09-17 1 views
1

Supposons que je le morceau de code suivant:Initialiser éléments choisis de std :: carte à la même valeur au moment de la compilation

#include <bits/stdc++.h> 

using namespace std; 

class SomeClass { 
    private: 
    const static map<int, int> some_map; 
}; 

const map<int, int> SomeClass::some_map = { 
    {1, 2}, 
    {3, 2}, 
    {4, 2}, 
    {10, 3}, 
    {11, 3}, 
    {12, 3}, 
    {15, 9} 
}; 

Comme vous pouvez le voir, j'initialiser plusieurs clés de la carte à la même valeur .

Serait-il possible d'exprimer la même chose dans une syntaxe plus courte (c'est-à-dire quelque chose comme: {1,3,4->2})? Ceci est juste un petit exemple mais en réalité j'ai beaucoup de clés avec la même valeur et je voudrais récupérer cette valeur rapidement.

+0

Il n'y a rien de semblable à cela mais vous pouvez l'écrire vous-même (avec une syntaxe légèrement différente). Pour être clair, votre 'std :: map' va être initialisé quand votre programme démarrera, ce n'est pas comme un tableau qui pourrait être initialisé" au moment de la compilation "dans le sens où il pourrait être cuit dans votre objet fichier. – mattnewport

Répondre

1

La syntaxe souhaitée {1,3,4->2} ressemble à une paire set + value. Vous pourriez utiliser un vecteur au lieu de définir. Puis définissez vos données d'initialisation comme un vecteur de ces paires, et ajoutez une cuillerée de code pour initialiser votre carte à partir de cela.