我希望能够检查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