繁体   English   中英

emplace_back在向量中调用赋值运算符,但不在列表中

[英]emplace_back calls assignment operator in vectors but not in list

按照http://www.cplusplus.com/reference/vector/vector/emplace_back/的理解,emplace_back可以在不调用赋值运算符的情况下就地创建对象。 但是在std :: vector的情况下,它们调用赋值运算符,而在std :: list的情况下,它们不调用赋值运算符。

我的对象不可复制。 除了使用指针之外,还有其他方法可以解决该问题。

向量中的擦除似乎也调用了赋值运算符,列表中的擦除不调用了赋值运算符。 这对我来说似乎是错误的。

std不支持不可复制的对象吗?

vector要求元素类型是可移动的(不一定是可复制的),以便将元素保持在连续的数组中。

如果旧容量太小,在任何时候插入都可能需要将所有元素都移到新阵列中。 除末尾外,擦除需要将擦除后的元素向前移动。

其他容器不需要该类型的容器是可移动的,因此如果您无法(或不想),则可能使用deque (允许两端插入和移除)或list (允许在任何位置插入和移除)。使它移动。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM