【发布时间】:2012-09-25 19:05:21
【问题描述】:
我很好奇为什么下面的代码不能连续循环运行。而且我也在寻找一些方法来实现我想要实现的目标——即重置循环内部的循环。我需要这样做,因为我需要考虑容器中的每个元素。之所以这样,是因为我可能从中间开始,需要循环回去检查其他信息/并且还需要重新检查其他信息。继续我的小测试示例:
for ( int i = 0; i != 10; i++ ) {
std::cout << std::endl << "TEST: " << i << std::endl;
if ( i++ == 10 ) {
i = 0;
} else {
i--;
}
}
上述方法不起作用有什么特别的原因吗?我很想知道为什么,所以我可以了解一切是如何运作的。这也导致了我面临的一个更大的问题。这是下面的代码。我正在使用 MSVC++ 2010 Express。此外,这是一个线程,因此其他数据无法访问它。它是一个使用 STL 的 unordered_map。如果为 2(我检查过),则它的大小。
for (game_player_client_map::const_iterator it = gpc_map_ptr->begin(); it != gpc_map_ptr->end(); ++it) {
if ( it++ == gpc_map_ptr->end() ) {
cout << endl << "IT == gpc_map_ptr->end()" << endl;
it = gpc_map_ptr->begin();
} else {
it--;
}
}
感谢 SO 提供的任何反馈,以及任何要学习的新事物 :-) 如果需要更多信息,我会提供。感谢您的宝贵时间。
【问题讨论】:
-
i=9; std::cout << i++;
标签: c++ stl for-loop unordered-map