SH.*_*x90 12 c++ vector std c++11
我正在创建一个类,我想知道如何创建类似于std::map
或std::vector
样式的构造函数.
std::map<std::string, std::string> map = {
{"foo", "bar"},
{"biz", "buz"},
{"bez", "boz"}
};
Run Code Online (Sandbox Code Playgroud)
不同之处在于我不希望我的班级要求接受的类型,就像std::map
那样.
std::map<std::string, std::string>
Run Code Online (Sandbox Code Playgroud)
我希望我的班级接受这种风格的论点:
{
{"foo", "bar"},
{"biz", "buz"},
{"bez", "boz"}
};
Run Code Online (Sandbox Code Playgroud)
但是有定义的类型.(std :: string,Typer)
'Typer'是一个我将作为值插入的类std::map
.
Rei*_*ica 24
如果我正确理解你的问题,你需要一个构造函数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"}
};
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1337 次 |
最近记录: |