【发布时间】:2019-10-31 10:37:49
【问题描述】:
是否有任何值得选择的理由,例如性能或安全性?
std::vector<std::string> some_vec{ "a","b","c"};
std::vector<std::string>::const_iterator iter = some_vec.begin();
std::vector<std::string>::const_iterator end = some_vec.end();
while( iter++ != end ){Do}
-
std::vector<std::string> some_vec{ "a","b","c"};
std::vector<std::string>::const_iterator iter = some_vec.begin();
while( iter++ != some_vec.end() ){Do}
【问题讨论】:
-
嗯。
end = some_vec.begin()这是错字吗?有什么理由不使用for (auto&& iter : some_ver)? -
大多数编译器可能会将它们优化为相同。您必须分析您的具体情况,看看其中一个是否比另一个更快。
-
@LearnMore 即使更新Kamil Cuk 指出的错字,当向量为空时,两个代码sn-ps 都会调用未定义的行为。:)
-
@KamilCuk 是的,错字。已编辑!不能轻易使用 auto,因为每个循环都会迭代并处理来自 vec 的一对字符串。
-
@LearnMore 至于问题,例如,结束迭代器可以无效。所以如果在循环内改变了向量,那么第二个代码 sn-p 更安全。
标签: c++ loops conditional-statements