Что такое {}, когда передается функции в CPP? - PullRequest
1 голос
/ 17 марта 2020

Функция map insert принимает {string,int} в качестве аргумента. как это работает?

#include <map>

using namespace std;

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

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

1 Ответ

3 голосов
/ 17 марта 2020

{"a", 1} является фигурным списком инициализации , и при передаче в функцию выполняется copy-list-initialization (введено в C ++ 11).

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

7) в выражении вызова функции, при этом в качестве аргумента используется braced-init-list, а инициализация списка инициализирует параметр функции

Given map<string, int> m; и m.insert({"a", 1});, std::map::insert а std::pair<const string, int>; поэтому {"a", 1} используется для инициализации временного std::pair, который передается в .insert(). Временный std::pair инициализируется его конструктором ; инициализация его членов first до "a" и second до 1.

...