我想测试一个非空 vector 是否包含相同的元素。这是最好的方法吗?
count(vecSamples.begin()+1, vecSamples.end(), vecSamples.front()) == vecSamples.size()-1;
最佳答案
正如@john正确指出的那样,即使前两个元素不同,您的解决方案也会遍历整个容器,这是很浪费的。
纯无助推C++ 11所需解决方案怎么样?
bool allAreEqual =
find_if(vecSamples.begin() + 1,
vecSamples.end(),
bind1st(not_equal_to<int>(), vecSamples.front())) == vecSamples.end();
在找到的第一个非相等元素上停止。
只需确保运行前vecSamples为非空即可。