首页 > 解决方案 > 传递给 CPP 中的函数时 { } 是什么?

问题描述

map insert函数{string,int}作为参数。这是如何运作的?

#include <map>

using namespace std;

int main(int argc, char *arg[])
{
    map<string, int> m;

    m.insert({"a", 1});
}

标签: c++stlinitializationlist-initialization

解决方案


{"a", 1}是一个花括号初始化列表,当被传递给一个函数时,会执行复制列表初始化(在 C++11 中引入)。

function( { arg1, arg2, ... } )   (7)

7) 在函数调用表达式中,使用花括号初始化列表作为参数,列表初始化初始化函数参数

给定map<string, int> m;and m.insert({"a", 1});,std::map::insert期望 a std::pair<const string, int>; 因此{"a", 1}用于初始化std::pair传递给.insert(). 临时std::pair由其构造函数初始化;将其成员初始化first"a"和。second1


推荐阅读