簡體   English   中英

類似於std :: map或std :: vector的構造函數

[英]Constructor similar to std::map or std::vector in a class

我正在創建一個類,我想知道如何創建類似於std::mapstd::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"}
  };
}

實例

typedef std::map<std::string, Typer> MyType;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM