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"}});