测试一个向量的所有元素是否相等
Test if all elements of a vector are equal
我想测试一个非空向量是否包含相同的元素。这是最好的方法吗?
count(vecSamples.begin()+1, vecSamples.end(), vecSamples.front()) == vecSamples.size()-1;
c++11(或Boost算法)
std::all_of(vecSamples.begin()+1,vecSamples.end(),
[&](const T & r) {return r==vecSamples.front();})
正如@john正确指出的那样,即使前两个元素不同,您的解决方案也会遍历整个容器,这是相当浪费的。
如何一个纯粹的无boost没有c++11要求的解决方案?
bool allAreEqual =
find_if(vecSamples.begin() + 1,
vecSamples.end(),
bind1st(not_equal_to<int>(), vecSamples.front())) == vecSamples.end();
在找到第一个不相等的元素时停止。在运行此命令之前,请确保vecSamples不是空的。
可能不会,因为它总是检查vector的所有元素,即使前两个元素不同。我个人会写一个for循环
如果vector至少包含一个元素:
std::equal(vecSamples.begin() + 1, vecSamples.end(), vecSamples.begin())
相关文章:
- C++默认情况下,指针类型数组的元素是否保证初始化为 nullptr?
- 检查 2D 网格的某个元素是否与另一个元素共享对角线、水平线或垂直线
- 如何知道地图中的最后一个元素是否被删除?
- 检查 TinyXML 中的元素是否存在
- 使用 at() 访问 std::map 元素是否比运算符 [] 慢?
- 在迭代期间添加到 std::unordered_set(或 unordered_map)中的元素是否会在迭代期间访问?
- 使用 Rcpp 加速替换迭代算法中的列表和向量元素是否合法?
- 通过引用访问矢量元素是否会降低C++的空间复杂性?
- 检查HTML 5视频元素是否正在获取帧
- 在c++中,如何检查一个数组的元素是否也是另一个数组中的元素
- 是否有更有效的方法来检查元素是否在给定的区间内
- 如何检查数组的 3 个元素是否具有相同的值
- 整数指针数组的元素是否可以指向整数数组?
- 在 new 关键字中,由默认构造函数初始化的类中的元素是否也使用 new 关键字在C++?
- 写入多维矢量子级中的元素是否安全?
- 使用容器中元素的别名删除带有 std::list::remove 的元素是否正确?
- 如何确定向量的元素是否交替为符号?
- 如何查看矢量中的所有元素是否相同?
- 从标准容器中移动元素是否合法?
- 如何检查 std::vector<std::string> 的元素是否以某个子字符串开头?