gpt4 book ai didi

c++ - 在正则表达式匹配上基于范围的 for 循环?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:30:26 33 4
gpt4 key购买 nike

在 C++11 的预定稿中,基于范围的 for 循环可以通过一对迭代器指定要迭代的范围。这使得迭代正则表达式的所有匹配变得容易。使用一对迭代器指定范围的功能后来被删除,并且在 C++11 中不存在。是否仍然有一种直接的方法来遍历特定正则表达式的所有匹配项?我希望能够做这样的事情:

std::regex begin(" 1?2?3?4* ");
std::regex end;

for(auto& match: std::pair(begin, end)) process(*match);

C++11 是否支持这种东西?

最佳答案

std::pair 做这件事的问题在于它“适用于”很多非有效范围的东西。从而导致错误。

C++11 没有为此提供内置解决方案。您可以使用 Boost.Range's make_iterator_range facility to build one easily .再一次,手动完成并不难:

template<typename T>
class IterRange
{
T start;
T end;
public:
IterRange(const T &start_, const T &end_) : start(start_), end(end_) {}

T begin() {return start;}
T end() {return end;}
};

template<typename T> IterRange<T> make_range(const T &start, const T &end) {return IterRange<T>(start, end);}

关于c++ - 在正则表达式匹配上基于范围的 for 循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12831969/

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