Junpei 发表于 2020-8-4 11:13:40

C++push_back和emplace_back的问题

今天编程时碰到的问题如图,为什么emplace会报错,顺便问一下{1,2,3,4}表示的到底是一个数组还是向量还是都不是?

baige 发表于 2020-8-4 11:18:16

本帖最后由 baige 于 2020-8-4 11:19 编辑

{1,2,3,4}是数组 vector也是数组

liuzhengyuan 发表于 2020-8-4 11:21:13

是不是 emplace_back 只支持单个元素?比如字符串,整数……

Junpei 发表于 2020-8-4 11:21:42

baige 发表于 2020-8-4 11:18
vector没有emplace_back这个成员函数吧.

有的,我用了挺久了,以前一直以为emplace_back和push_back达到的效果是一样的,结果今天报错了

Junpei 发表于 2020-8-4 11:22:16

QAQ

Junpei 发表于 2020-8-4 11:26:04

liuzhengyuan 发表于 2020-8-4 11:21
是不是 emplace_back 只支持单个元素?比如字符串,整数……

可以传多个元素,多个传进去会直接调用存储的type类型的构造函数在末尾构造,而且我这里按我的理解应该是只传了一个向量进去,应该也没多个元素把。。。

baige 发表于 2020-8-4 11:27:51

本帖最后由 baige 于 2020-8-4 11:28 编辑

试一下这样vec.emplace_back(std::initializer_list<int>{1,2,3,4});
具体可以看下面的链接

baige 发表于 2020-8-4 11:28:23

https://kb.kutu66.com/others/post_12552796

Junpei 发表于 2020-8-4 12:35:00

baige 发表于 2020-8-4 11:28
https://kb.kutu66.com/others/post_12552796

太感谢了兄弟!QAQ
页: [1]
查看完整版本: C++push_back和emplace_back的问题