J'ai quelques mots à initialiser lors de la déclaration d'un ensemble de chaînes.
...
using namespace std;
set<string> str;
/*str has to contain some names like "John", "Kelly", "Amanda", "Kim".*/
Je ne veux pas utiliser str.insert("Name");
à chaque fois.
Toute aide serait appréciée.
En utilisant C++ 11:
std::set<std::string> str = {"John", "Kelly", "Amanda", "Kim"};
Autrement:
std::string tmp[] = {"John", "Kelly", "Amanda", "Kim"};
std::set<std::string> str(tmp, tmp + sizeof(tmp) / sizeof(tmp[0]));
En C++ 11
Utilisez listes d'initialisation .
set<string> str { "John", "Kelly", "Amanda", "Kim" };
En C++ 03 (Je vote la réponse de @ john. C'est très proche de ce que j'aurais donné.)
Utilisez le constructeur std::set( InputIterator first, InputIterator last, ...)
.
string init[] = { "John", "Kelly", "Amanda", "Kim" };
set<string> str(init, init + sizeof(init)/sizeof(init[0]) );
Il y a beaucoup de façons de le faire, en voici une
string init[] = { "John", "Kelly", "Amanda", "Kim" };
set<string> str(init, init + 4);
si vous n'êtes pas c ++ 0x:
Vous devriez regarder boost :: assign
http://www.boost.org/doc/libs/1_39_0/libs/assign/doc/index.html#list_of
Jetez également un œil à:
tilisation de STL/Boost pour initialiser un ensemble codé en dur <vector <int>>
#include <boost/assign/list_of.hpp>
#include <vector>
#include <set>
using namespace std;
using namespace boost::assign;
int main()
{
set<int> A = list_of(1)(2)(3)(4);
return 0; // not checked if compile
}
Il y a plusieurs façons de procéder. En utilisant C++ 11, vous pouvez essayer soit ...
std::set<std::string> set {
"John", "Kelly", "Amanda", "Kim"
};
... qui utilise une liste d'initialisation, ou std::begin
et std::end
...
std::string vals[] = { "John", "Kelly", "Amanda", "Kim" };
std::set<std::string> set(std::begin(vals), std::end(vals));
Créez un tableau de chaînes (tableau C) et initialisez l'ensemble avec ses valeurs (pointeurs de tableau comme itérateurs):std::string values[] = { "John", "Kelly", "Amanda", "Kim" };
std::set s(values,values + sizeof(values)/sizeof(std::string));