c++ - 传递给 CPP 中的函数时 { } 是什么?
问题描述
该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}
是一个花括号初始化列表,当被传递给一个函数时,会执行复制列表初始化(在 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"
和。second
1
推荐阅读
- spring - 即使未在循环内执行提交,Spring Kafka 也不会再次轮询
- xcode - 可以使用Xcode12的.command时如何让MacApp窗口背景透明或半透明
- c++ - 具有单继承的类的指针转换偏移
- postgresql - PostGIS 使用 epsg 5186 将米转换为度数
- java - Mockito when()..thenReturn() 总是返回 null
- python - 如何创建 4D 复杂曲面图?
- javascript - 如何从 Promise React Native 中提取数据
- javascript - Rails Web 应用程序:机架应用程序错误处理请求 { GET /packs/js/application-682c14949987e19a8380.js }
- python - 如果函数未完成,使用超时返回
- aws-api-gateway - 使用 boto3 库获取 resourceId