假设我有一个存储在向量中的服务器名称列表,我想一次联系他们一个,直到他们成功响应。我正在考虑以下列方式使用 STL 的 find_if 算法:
find_if(serverNames.begin(), serverNames.end(), ContactServer());
Run Code Online (Sandbox Code Playgroud)
其中 ContactServer 是谓词函数对象。
一方面,存在一个问题,因为对于相同的服务器名称,谓词并不总是返回相同的结果(因为服务器停机、网络问题等......)。但是,无论使用谓词的哪个副本(即谓词没有真实状态),都将返回相同的结果,因此在这种情况下与状态保持谓词的原始问题无关。
你怎么说?
我想我会这么做。
我唯一担心的是它的可读性(以及可维护性)。对我来说,它的内容类似于“查找我可以联系的第一个服务器”,这非常有道理。
您可能需要重命名ContactServer以表明它是一个谓词;CanContactServer?(但随后人们会抱怨隐藏的副作用。嗯......)