【发布时间】:2015-02-07 04:59:45
【问题描述】:
举个例子:
std::vector<std::string> split(const std::string& str) {
std::vector<std::string> result;
std::string curr;
for (auto c : str) {
if (c == DELIMITER) {
result.push_back(std::move(curr)); // ATTENTION HERE!
} else {
curr.push_back(c);
}
}
result.push_back(std::move(curr));
return result;
}
我可以重复使用curr std:string 吗?这个 sn-p 似乎工作:在curr 被移到里面之后
result 向量,它变为空。我想确定这不是标准中未定义的行为,并且它不能仅仅因为运气而起作用。
【问题讨论】:
-
它处于有效但未指定的状态。不保证为空。
-
我认为这里的区别是微妙的,例如:小字符串优化
标签: c++ c++11 move-semantics