我希望能夠檢查std::copy_if()
的結果,看看是否有任何內容打印到std::cout
。如何檢查copy_if是否在ostream_iterator的範圍內返回true?
例如:
vector<int> vec {1, 2, 3, 4, 5, 6, 7};
struct is_odd {
bool operator()(int val)
return val % 2 == 1;
};
copy_if(vec.begin(), vec.end(), ostream_iterator<int>{cout},
is_odd());
有沒有一種方法可以檢查是否打印什麼?我試圖看看std::copy_if()
的返回結果,但它似乎沒有幫助。也許我應該使用不同的算法?
謝謝。
是的,它好像是它的這個,或者使用臨時數據結構來保持計數。 – Dillydill123
這通常被認爲是危險的,因爲類似is_odd的東西不應該有副作用。想象一下別人發現函數is_odd並想在代碼的其他部分使用它。 – worenga
我所做的只不過是使函數對象的布爾部分成爲函數對象的一部分,並在使用它的唯一函數內部聲明瞭函數對象。這應該照顧到這個問題。我會看看你提出的另一種選擇。謝謝 – Dillydill123