将字符串移动到矢量

coo*_*451 5 c++ string vector c++11

有没有办法内容从std :: string移动到std :: vector?我认为现在在语言中使用rvalue-references,这个操作有时非常有用.

Nic*_*las 6

理论上可以从一种对象类型转移到另一种对象类型。然而,这些对象类型的设计必须允许这样做。vectorstring没有。

一个对象允许它的一个很好的线索是如果std::vector它有一个接受std::string&&. 它没有这样的构造函数。此外,vector必须是 的朋友string才能了解其内部结构。

  • @cooky451:嗯,考虑到许多“字符串”都实现了小字符串优化(意味着特定长度以下的字符串不是堆分配的),这是“不可能的”。你不能告诉一个“字符串”“请不要删除”它没有分配的东西。另外,请注意,它们可以分配有不同的分配器(尽管不可否认,这可能是移动的要求,很像“list::splice”)。[有充分的理由解释为什么“字符串”和“向量”是两种不同的类型](http://stackoverflow.com/questions/2436762)。 (4认同)