gpt4 book ai didi

c++ - 我可以使用 always emplace 代替 insert 来插入单个元素吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:24:12 27 4
gpt4 key购买 nike

我想知道在向 STL 容器中插入单个元素(如 set、unordered_set)时,是否始终使用 emplace 来替换 insert 是否可以?

从签名来看,emplace比较简单,不涉及重载。停止使用 insert 并一直使用 emplace 有什么问题吗?

注意:有很多问题询问 emplaceinsert/push_back 等之间的区别(例如 hereherehere ) 我理解其中的区别,而且在我看来 emplace 在各个方面都更好。我只是想确认是否可以弃用 insert

最佳答案

有一些例子here可以适应 emplaceinsert,显示行为可能不同的时间。

这些例子可能看起来有点人为,所以我会给出一个希望看起来不那么人为的例子:

#include <set>

template <typename T>
T id(T x) { return x; }

int main() {
std::set<int(*)(int)> s;
s.insert(id); // OK
s.emplace(id); // error
s.emplace(id<int>); // OK
}

insert 可以推断出 id 的模板参数,因为它知道它想要什么类型。对于 emplace,除非您明确指定,否则会出现错误。

关于c++ - 我可以使用 always emplace 代替 insert 来插入单个元素吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24846781/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com