[英]`push_back` vs. `emplace_back` sign warning
就像這之間的區別:
signed a = 0;
unsigned b = a;
和這個:
unsigned b = unsigned(a);
后者是阻止此類警告發生的一種典型方法(另一種方法是強制轉換)。
調用emplace_back()
時,它是完全相同的-該方法的重點是從給定值構造一個value_type
(在您的情況下為unsigned)。
同樣,如果您有:
struct Foo { explicit Foo(int x) {} };
然后,您可以執行以下操作:
std::vector<Foo> v;
v.emplace_back(1);
但這不是:
v.push_back(1);
總之, emplace_back()
的含義不是“ push_back(),而是更有效”。 相反,它是“在容器內部使用這些參數構造value_type”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.