发布于 2016-11-26 13:57:00
就像这两者之间的区别:
signed a = 0;
unsigned b = a;这是:
unsigned b = unsigned(a);后者是阻止此类警告发生的典型方法(另一种方式是强制转换)。
在调用emplace_back()时完全一样--这个方法的全部目的是从给定的值构造一个value_type (在您的情况下没有签名)。
同样,如果您有:
struct Foo { explicit Foo(int x) {} };然后你就可以这样做:
std::vector<Foo> v;
v.emplace_back(1);但不是这个:
v.push_back(1);总之,emplace_back()的含义不是"push_back(),而是更高效“。相反,它是“使用这些参数在容器中构造一个value_type”。
https://stackoverflow.com/questions/40819022
复制相似问题