gpt4 book ai didi

c++ - 传入一个迭代器,它只迭代满足特定条件的元素

转载 作者:行者123 更新时间:2023-11-30 03:28:13 25 4
gpt4 key购买 nike

在C++中,是否可以传入一个只迭代满足特定条件的元素的迭代器?虽然当然可以编写我自己的迭代器类,但我想知道是否存在标准库解决方案。例如,std::discrete_distribution 的构造函数接受两个迭代器(开始和结束)的输入。现在我需要执行以下操作:

std::vector<int> x = {1, 2, 3, 4, 5};
std::vector<int> y;
std::copy_if(x.begin(), x.end(), std::back_inserter(y), my_condition);
std::discrete_distribution dd(y.begin(), y.end());

但这需要复制 y 的元素两次。我更喜欢以下内容:

std::vector<int> x = {1, 2, 3, 4, 5};
std::discrete_distribution dd(std::condition_iter(x.begin(), my_condition), x.end());

最佳答案

C++ 中既没有特殊语法也没有标准库功能可以解决您的问题。但是,有一个名为“range-v3”的库可能会有所帮助。这里有几个链接:
https://github.com/ericniebler/range-v3
https://ericniebler.github.io/range-v3/
寻找view::remove_if - 我认为这就是您所需要的。这将在不实际修改任何内容的情况下即时过滤容器。

关于c++ - 传入一个迭代器,它只迭代满足特定条件的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46760605/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com