map
insert
函数以{string,int}
作为参数。这是如何运作的?
#include <map>
using namespace std;
int main(int argc, char *arg[])
{
map<string, int> m;
m.insert({"a", 1});
}
最佳答案
{"a", 1}
是一个大括号初始列表,当传递给函数时,将执行copy-list-initialization(在C++ 11中引入)。
function( { arg1, arg2, ... } ) (7)
7) in a function call expression, with braced-init-list used as an argument and list-initialization initializes the function parameter
给定
map<string, int> m;
和m.insert({"a", 1});
, std::map::insert
期望一个std::pair<const string, int>
;因此{"a", 1}
用于初始化传递给std::pair
的临时.insert()
。临时std::pair
由其constructor初始化;初始化其成员first
到"a"
,并将second
初始化到1
。
关于c++ - 传递给CPP中的函数时{}是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60715566/