All_of函数用于检查数组中所有元素的条件
all_of function to check condition in all elements of part of an array
下面的代码检查声明的数组中是否所有元素都是奇数。
#include "stdafx.h"
#include <iostream> // std::cout
#include <algorithm> // std::all_of
#include <array> // std::array
int main () {
std::array<int,8> foo = {3,5,7,11,13,17,19,23};
if ( std::all_of(foo.begin(), foo.end(), [](int i){return i%2;}) )
std::cout << "All the elements are odd numbers.n";
return 0;
}
(样本取自http://www.cplusplus.com/reference/algorithm/all_of)
我想检查是否从foo[2]
开始声明的数组中的所有元素都是奇数。
用foo[2]
代替foo.begin()
无效。我尝试了很多其他的东西来使这个工作,都是非常基本的(这里是非常基本的c++用户),没有成功。我不想为了实现这一点而调整数组的大小。
最终我要找的是有一个循环,在每个元素上检查数组的一部分的条件,就像for
循环检查任何元素上的条件数组的一部分。这在R中相对容易实现,我希望在c++中也同样容易实现。
这里不能使用迭代器和元素,它们不代表范围。从更一般的意义上说,即使尝试使用指向元素的指针和迭代器,也不能很好地定义任何给定容器的所有实现。
应该使用std::next(it.begin(), 2)
自增到begin()
迭代器到foo[2]
元素,然后可以使用两个迭代器遍历该范围。
std::all_of(std::next(foo.begin(), 2), foo.end(),
[](int i){/*...*/})
std::next()
更通用,适用于除了随机访问迭代器之外的迭代器(例如,用于替代it.begin() + 2
);但是对于传递给它的迭代器类型来说仍然是高性能的。
相关文章:
- 基于多个条件处理地图中的所有元素
- 如果验证容器的大小并在同一条件语句下访问元素,这是很好的做法吗?
- 如何有条件地将元素添加到 std::array - C++11
- 我可以在一行代码中将向量中与条件匹配的所有元素插入到集合中吗?
- 在矢量中使用特定条件检查唯一元素
- 如何在不使用循环或迭代器的情况下检查所有列表元素并在满足条件时删除一个
- AVX2 根据条件将连续元素扩展到稀疏向量?(如AVX512 VP扩展)
- 检查是否所有 std::元组元素都满足条件 + 设计问题
- 在C++中有条件地删除Singly Linked List中的元素
- 在c++中找到满足给定条件的向量的元素的位置
- 传入一个迭代器,该迭代器只迭代满足特定条件的元素
- X宏中元素的条件定义
- 根据条件将元素从 std::vector 复制到 std::set 但它崩溃了
- 根据条件将元素从一个forward_list转移到另一个
- 如何根据另一个向量中的条件从另一个向量中删除元素
- OpenCV 从矩阵中获取条件基最大元素位置
- 如何根据c++11中的特定条件从向量中擦除元素
- 从向量中移除最后的元素,直到条件
- 基于条件语句删除循环中的矢量元素
- 找到满足条件的第n个元素