Ответ 1
Использование С++ 11:
std::set<std::string> str = {"John", "Kelly", "Amanda", "Kim"};
В противном случае:
std::string tmp[] = {"John", "Kelly", "Amanda", "Kim"};
std::set<std::string> str(tmp, tmp + sizeof(tmp) / sizeof(tmp[0]));
У меня есть несколько слов для инициализации при объявлении набора строк.
...
using namespace std;
set<string> str;
/*str has to contain some names like "John", "Kelly", "Amanda", "Kim".*/
Я не хочу использовать str.insert("Name");
каждый раз.
Любая помощь будет оценена.
Использование С++ 11:
std::set<std::string> str = {"John", "Kelly", "Amanda", "Kim"};
В противном случае:
std::string tmp[] = {"John", "Kelly", "Amanda", "Kim"};
std::set<std::string> str(tmp, tmp + sizeof(tmp) / sizeof(tmp[0]));
В С++ 11
Используйте списки инициализаций.
set<string> str { "John", "Kelly", "Amanda", "Kim" };
В С++ 03 (я голосую до ответа @john. Это очень близко к тому, что я бы дал.)
Используйте конструктор std::set( InputIterator first, InputIterator last, ...)
.
string init[] = { "John", "Kelly", "Amanda", "Kim" };
set<string> str(init, init + sizeof(init)/sizeof(init[0]) );
Здесь вы можете сделать много способов, вот один
string init[] = { "John", "Kelly", "Amanda", "Kim" };
set<string> str(init, init + 4);
если вы не С++ 0x:
Вы должны посмотреть на boost:: assign
http://www.boost.org/doc/libs/1_39_0/libs/assign/doc/index.html#list_of
Также посмотрите:
Использование STL/Boost для инициализации жестко запрограммированного набора < 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
}
Существует несколько способов сделать это. С помощью С++ 11 вы можете попробовать...
std::set<std::string> set {
"John", "Kelly", "Amanda", "Kim"
};
... который использует список инициализаторов, или std::begin
и std::end
...
std::string vals[] = { "John", "Kelly", "Amanda", "Kim" };
std::set<std::string> set(std::begin(vals), std::end(vals));
Создайте массив строк (массив C) и инициализируйте набор с его значениями (указатели массива как итераторы): std::string values[] = { "John", "Kelly", "Amanda", "Kim" };
std::set s(values,values + sizeof(values)/sizeof(std::string));
самый простой способ
#define str string
....
set<str> so;
so.insert("John");
so.insert("Kelly");
so.insert("Amanda");
so.insert("Kim");