C++ 将字符串移动到向量中

C++ 将字符串移动到向量中,c++,string,vector,c++11,C++,String,Vector,C++11,是否有方法将内容从std::string移动到std::vector?我认为现在语言中有了右值引用,这个操作有时会非常有用。理论上可以从一种对象类型移动到另一种对象类型。但是,这些对象类型必须设计为允许这样做矢量和字符串不可用 如果std::vector有一个构造函数接受std::string&,那么对象允许它的一个很好的线索就是。它没有这样的构造函数。另外,vector必须是string的朋友才能了解它的内部结构。你说的“移动”是什么意思。。移动移动而不复制。my_vec=std::move(

是否有方法将内容从std::string移动到std::vector?我认为现在语言中有了右值引用,这个操作有时会非常有用。

理论上可以从一种对象类型移动到另一种对象类型。但是,这些对象类型必须设计为允许这样做<代码>矢量和
字符串
不可用


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

你说的“移动”是什么意思。。移动移动而不复制。my_vec=std::move(my_字符串);(显然不起作用)我不懂一种真正能“动”的语言。您可以复制,然后删除/为空source@stefanbachert:那么你需要更多地了解C++11。在内部,字符串可能不同于向量,因此你建议的那种C++11风格的移动可能是不可能的。好吧,这令人失望。没有办法告诉字符串“嘿,我需要这个,请不要删除”@cooky451:好吧,考虑到许多
string
s实现了小字符串优化(意味着在一定长度下的字符串不会被堆分配),这是不可能做到的。您不能告诉
字符串
它没有分配的内容“请不要删除”。另外,请注意,它们可以使用不同的分配器进行分配(尽管不可否认,这可能是move的一个要求,很像
list::splice
)。有,好吧,我没有考虑小字符串优化。嗯,我想我得抄下来。