我正在创建一个类,我想知道如何创建类似于std::map
或std::vector
样式的构造函数。
std::map<std::string, std::string> map = {
{"foo", "bar"},
{"biz", "buz"},
{"bez", "boz"}
};
所不同的是,我不希望我的班级像其他人一样要求要接受的类型std::map
。
std::map<std::string, std::string>
我希望我的班级接受这种类型的参数:
{
{"foo", "bar"},
{"biz", "buz"},
{"bez", "boz"}
};
但是具有定义的类型。(std :: string,Typer)
“ Typer”是一个类,我将在其中插入作为值std::map
。
如果我正确理解了您的问题,则希望构造函数采用std::initializer_list<std::pair<std::string, Typer>>
,如下所示:
struct Typer
{
std::string data;
Typer(const char *s) : data(s) {}
};
struct MyClass
{
MyClass(std::initializer_list<std::pair<std::string, Typer>> i)
: myMap(begin(i), end(i))
{}
std::map<std::string, Typer> myMap;
};
int main()
{
MyClass m = {
{"foo", "bar"},
{"biz", "buz"},
{"bez", "boz"}
};
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句