由於C++ 11在算法庫中有all_of
, any_of
and none_of
來確定謂詞是否適用於某個範圍的所有元素或任何元素。到這些算法一項所述的單次調用返回的信息的1位,而對於一個特定的範圍和謂語有4種可能性:確定謂詞是否適用於某個範圍的某個或某些元素
- 謂詞上的所有元素和沒有元素成立:範圍爲空;
- 謂詞適用於所有元素(且範圍不爲空);
- 謂詞在任何元素上都沒有(並且範圍不爲空);
- 謂詞對某些元素有效,但不是全部元素。
是否有簡明有效的方法來查找此信息?調用all_of
然後none_of
是一種可能性,但是(a)不能在單程範圍內工作,並且(b)恰好對必要以上的謂詞進行評估。 Boost會被接受。
我覺得自制是你唯一的選擇 – sp2danny 2014-09-26 10:12:51
你可以用'find_first_of的兩個電話實現自己的功能(一次用謂語,一次用否定)。或者另一種想法:先手動檢查,然後應用'all_of'或'none_of'。 – Csq 2014-09-26 10:17:31
@Csq我已經用第一個選項做出了答案 - 你可以用第二個選項做出答案。 – Angew 2014-09-26 10:18:26