文字列セットの宣言中に初期化されるいくつかの単語があります。
_...
using namespace std;
set<string> str;
/*str has to contain some names like "John", "Kelly", "Amanda", "Kim".*/
_
毎回str.insert("Name");
を使いたくありません。
任意の助けをいただければ幸いです。
C++ 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]));
C++ 11では
初期化リスト を使用します。
_set<string> str { "John", "Kelly", "Amanda", "Kim" };
_
C++ 03(@ johnの答えを投票しています。それは私が与えたものに非常に近いです。)
std::set( InputIterator first, InputIterator last, ...)
コンストラクターを使用します。
_string init[] = { "John", "Kelly", "Amanda", "Kim" };
set<string> str(init, init + sizeof(init)/sizeof(init[0]) );
_
これを行う方法はたくさんありますが、ここに1つあります
string init[] = { "John", "Kelly", "Amanda", "Kim" };
set<string> str(init, init + 4);
c ++ 0xではない場合:
Boost :: assignを見てください
http://www.boost.org/doc/libs/1_39_0/libs/assign/doc/index.html#list_of
以下もご覧ください。
STL/Boostを使用してハードコードされたset <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
}
これを行うには複数の方法があります。 C++ 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));