我想测试一个非空 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为非空即可。

09-29 23:49