Предположим, у меня есть список имен серверов, хранящихся в векторе, и я хотел бы связаться с ними по одному, пока вы не ответили успешно. Я думал об использовании алгоритма find_if STL в следующим образом:Является ли этот код злоупотреблением STL's find_if?
find_if(serverNames.begin(), serverNames.end(), ContactServer());
Где ContactServer функция предиката объект.
С одной стороны, существует проблема, поскольку предикат не всегда возвращает тот же результат для одного и того же имени сервера (из-за простоя сервера, сетевых проблем и т. Д.). Тем не менее, тот же результат будет возвращен независимо от того, какая копия предиката используется (, т. Е. предикат не имеет реального состояния), поэтому исходная проблема с предикатами сохранения состояний в данном случае не имеет отношения.
Что вы скажете?
`for_each()` не удовлетворяет этому требованию вопроса: «Я хотел бы связаться с ними по одному, пока вы не ответили успешно». Это продолжается и связывается со всеми контактными серверами в контейнере. Затем в конце пользователь получает информацию только о последней контактной найденной, а не о первой, или, по крайней мере, о всех из них ... не то, что они, похоже, хотят получить информацию о каких-либо. – 2017-05-11 02:16:58