c++ - 传递给CPP中的函数时{}是什么?

标签 c++ stl initialization list-initialization

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/

相关文章:

c++ - 编写一个只接受编译时常量参数的函数?

c++ - MPI_Comm_split 解释

c++ - std::unordered_set<Foo> 作为类 Foo 的成员

java - Java中数组变量初始化错误

c++ - gcc 4.8 或更早版本是否存在关于正则表达式的问题?

c++ - 选择值/指针/引用是否有一个规则或优先级?

c++ - 为什么下限不适用于 vector 对

c++ - 用 std::thread 替代 WaitForMultipleObjects?

c# - 在c#中的任意起始索引上初始化数组

c++ - 方便的 C++ 结构初始化