You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++如何调用匿名对象成员函数避免插入map时使用set临时变量?

编译失败原因

std::set::insert 方法的返回值为 std::pair<iterator, bool> 类型,而非 std::set 对象本身,因此你尝试把 insert 的返回值作为 pair 的第二个参数传入时,会出现类型不匹配的编译错误。

无临时变量的实现方式

1. 初始化列表构造(最推荐,C++11及以上支持)

直接通过初始化列表构造匿名 std::set 对象即可,写法非常简洁:

my_map.insert(make_pair(my_int1, set<int>{my_int2}));

如果使用 C++17 及以上版本,支持类模板实参推导,还可以进一步简化:

my_map.insert(make_pair(my_int1, set{my_int2}));

2. emplace 直接构造(性能更优,也满足无临时变量要求)

直接调用 map 的 emplace 方法,在容器内部直接构造 pair 对象,不需要额外构造临时的 pair 和 set:

my_map.emplace(my_int1, std::initializer_list<int>{my_int2});

内容的提问来源于stack exchange,提问作者Crusader370

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 18:54:05