要求这个'for-loop'的动作

时间:2015-07-02 09:03:36

标签: c++ if-statement for-loop iterator

我可以理解it正在迭代buckets_,但这个for循环中的操作是什么?在我的调试中,if (it->second)满意if (this->next()->putq(it->second) == -1)不满意。那么这个for循环只能判断GADGET是否失败了吗?

 for (map_type_::iterator it = buckets_.begin(); it != buckets_.end(); it++) {
      if (it->second) {
      if (this->next()->putq(it->second) == -1) {
        it->second->release();
        GDEBUG("Failed to pass bucket down the chain\n");
        return GADGET_FAIL;
      }
      }
}

1 个答案:

答案 0 :(得分:1)

您的地图很可能包含指针。 if (it->second)检查指针是否为NULL,如果不是NULL,则执行转到下一个if语句(if (this->next()->putq(it->second) == -1))最有可能“将桶传递到链中” ...如果失败(返回-1),则GADGET_FAIL将作为错误代码返回。

putq实际上可能永远不会返回-1,或者可能仅在非常危险的情况下(系统内存不足)。因此,第二个if语句中的代码可能(几乎)无法达到。

因此,循环可以判断GADGET“传递链”是否失败。但它可能永远不会失败。

如果没有更多putq发布的代码......

,那就可以说了