在C中写一个for/else的简洁方法?

前端之家收集整理的这篇文章主要介绍了在C中写一个for/else的简洁方法?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在我正在处理的一些代码中,我有一个迭代遍历地图的for循环:
  1. for (auto it = map.begin(); it != map.end(); ++it) {
  2.  
  3. //do stuff here
  4. }

我想知道是否有某种方法可以简明扼要地写出以下内容

  1. for (auto it = map.begin(); it != map.end(); ++it) {
  2. //do stuff here
  3. } else {
  4. //Do something here since it was already equal to map.end()
  5. }

我知道我可以改写为:

  1. auto it = map.begin();
  2. if (it != map.end(){
  3.  
  4. while ( it != map.end() ){
  5. //do stuff here
  6. ++it;
  7. }
  8.  
  9. } else {
  10. //stuff
  11. }

但有没有更好的方法不涉及包装if语句?

解决方法

明显…
  1. if (map.empty())
  2. {
  3. // do stuff if map is empty
  4. }
  5. else for (auto it = map.begin(); it != map.end(); ++it)
  6. {
  7. // do iteration on stuff if it is not
  8. }

顺便说一下,既然我们在这里谈论C 11,你可以使用这个语法:

  1. if (map.empty())
  2. {
  3. // do stuff if map is empty
  4. }
  5. else for (auto it : map)
  6. {
  7. // do iteration on stuff if it is not
  8. }

猜你在找的C&C++相关文章