Cómo inicializar un conjunto de cadena en C++?

Tengo un par de palabras para ser inicializado al declarar un conjunto de cuerdas.

...
using namespace std;
set<string> str;

/*str has to contain some names like "John", "Kelly", "Amanda", "Kim".*/

No quiero usar str.insert("Name"); cada vez.

Cualquier ayuda se agradece.

InformationsquelleAutor Crocode | 2012-09-08

7 Kommentare

  1. 70

    Con C++11:

    std::set<std::string> str = {"John", "Kelly", "Amanda", "Kim"};

    Lo contrario:

    std::string tmp[] = {"John", "Kelly", "Amanda", "Kim"};
    std::set<std::string> str(tmp, tmp + sizeof(tmp) / sizeof(tmp[0]));
  2. 15

    En C++11

    Uso inicializador de las listas de.

    set<string> str { "John", "Kelly", "Amanda", "Kim" };

    En C++03 (voy a votar hasta @la respuesta de juan. Está muy cerca de lo que yo hubiera dado.)

    Utilizar el std::set( InputIterator first, InputIterator last, ...) constructor.

    string init[] = { "John", "Kelly", "Amanda", "Kim" };
    set<string> str(init, init + sizeof(init)/sizeof(init[0]) );
  3. 8

    Hay un montón de maneras de hacer esto, he aquí una

    string init[] = { "John", "Kelly", "Amanda", "Kim" };
    set<string> str(init, init + 4);
    • ¿cómo elegir el segundo elemento del conjunto aquí? como una matriz[1]
  4. 3

    Hay varias maneras de hacer esto. El uso de C++11, puede probar cualquiera de las…

    std::set<std::string> set {
      "John", "Kelly", "Amanda", "Kim"
    };

    … que utiliza una lista de inicializador, o std::begin y std::end

    std::string vals[] = { "John", "Kelly", "Amanda", "Kim" };
    std::set<std::string> set(std::begin(vals), std::end(vals));
  5. 2

    Crear una matriz de cadenas(matriz C) e inicializar el conjunto con sus valores (array de punteros como iteradores):

    std::string values[] = { "John", "Kelly", "Amanda", "Kim" };
    std::set s(values,values + sizeof(values)/sizeof(std::string));

  6. -5

    la manera más fácil

    #define str string
    ....
    set<str> so;
    so.insert("John");
    so.insert("Kelly");
    so.insert("Amanda");
    so.insert("Kim");
    • La pregunta dice explícitamente que no desea utilizar una plaquita de cada artículo. Y el definir un macro es completamente irrelevante para la pregunta.

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea