假设我有一个存储在 bootstrap 中的服务器名称列表,我想一次与它们联系一次,直到成功响应为止。我正在考虑通过以下方式使用STL的find_if算法:

find_if(serverNames.begin(), serverNames.end(), ContactServer());

其中ContactServer是谓词功能对象。
一方面,存在一个问题,因为谓词将不会总是针对相同的服务器名称返回相同的结果(由于服务器停机,网络问题等)。但是,无论使用哪个谓词拷贝(即谓词都没有真实状态),都将返回相同的结果,因此在这种情况下,保持状态谓词的原始问题并不重要。

你怎么说?

最佳答案

我想我会去的。

我唯一担心的是它的可读性(以及可维护性)。对我来说,它读的是“找到我可以联系的第一台服务器”之类的东西,这很有意义。

您可能需要重命名ContactServer来表明它是一个谓词; CanContactServer? (但是后来人们会提示隐藏的副作用。嗯...)

10-08 04:15