C++ 是否可以将无序的_映射声明并初始化为函数参数?

C++ 是否可以将无序的_映射声明并初始化为函数参数?,c++,C++,可以在一行中声明和初始化无序映射,如下所示: std::unordered_map<std::string,std::string> colors({{"sky","blue"}}); std::无序地图颜色({{“天空”,“蓝色”}); 但是有可能用它来代替函数参数吗 例如,如果我有一个具有以下签名的函数: void foo(std::unordered_map<std::string,std::string> inputColors); void foo(标准:

可以在一行中声明和初始化无序映射,如下所示:

std::unordered_map<std::string,std::string> colors({{"sky","blue"}});
std::无序地图颜色({{“天空”,“蓝色”});
但是有可能用它来代替函数参数吗

例如,如果我有一个具有以下签名的函数:

void foo(std::unordered_map<std::string,std::string> inputColors);
void foo(标准::无序映射输入颜色);
我可以通过声明并初始化map作为参数来调用它吗

例如:

foo(std::无序地图颜色({{“天空”,“蓝色”});

编辑:正确的方法是什么?请提供语法和示例。

是的,这是可能的。程序将为该参数创建一个
rvalue
引用

void foo(std::unordered_map<std::string,std::string> colors)
{
    for(auto &x : colors)
    {
       std::cout<< x.first<<"\n";
       std::cout<<x.second<<"\n";
    }
}


int main()
{
  foo({{"sky","blue"}});
}
void foo(标准::无序地图颜色)
{
用于(自动和x:颜色)
{

std::cout您只需提供一个初始值设定项:

foo({{"sky", "blue"}});
这将用于构造一个临时的
无序\u映射
,该映射将被传递给函数。如果函数重载导致歧义,则可以完整地拼写名称

foo(std::unordered_map<std::string,std::string>{{"sky","blue"}});
foo(std::无序地图{{“天空”,“蓝色”});

您能解释一下语法吗?示例-如何操作?
foo(std::unordered_map<std::string,std::string>{{"sky","blue"}});