Java 8中的流在C++中是否也有类似的东西?例如,在Java中,您可以像这样使用流来迭代集合:
int arr[] = { 1, 2, 3 };
Arrays.stream(arr); // this returns a stream
// on these streams you can apply some functions like the filter function:
int evenArray[] = Arrays.stream(arr).filter(a -> { return a % 2 == 0; }).toArray();
// the result of filter is another stream. You can also collect to a new array after
那么,在C中有这样的东西吗?我真的很喜欢Java的这个特性,我找到的只是一篇解释的文章,没有。我希望,C可能得到了我错过的更新。
1条答案
按热度按时间zqdjd7g91#
正如@NathanOliver所指出的,C++20范围来拯救。如果你想首先过滤
std::vector<int>
,然后将每个元素乘以2,你可以写:然而,输出是一个范围,而不是一个向量。据我所知,在C20中没有标准的方法将其转换回向量,但是在C23中添加了
std::ranges::to
。在此之前,您需要一个解决方案。