【发布时间】:2010-02-16 09:53:46
【问题描述】:
使用BOOST_FOREACH时,下面的代码安全吗?
BOOST_FOREACH (const std::string& str, getStrings())
{
...
}
...
std::vector<std::string> getStrings()
{
std::vector<std::string> strings;
strings.push_back("Foo");
...
return strings;
}
或者我应该在调用BOOST_FOREACH之前获取容器的副本,例如:
const std::vector<std::string> strings = getString();
BOOST_FOREACH (const std::string& str, strings)
{
...
}
在第一个示例中,BOOST_FOREACH 是否有可能最终多次调用getStrings()?
【问题讨论】: