在C++ 11的预决定草稿中,基于范围的for循环可以指定要通过一对迭代器迭代的范围。这使得遍历正则表达式的所有匹配变得很容易。使用一对迭代器指定范围的能力后来被删除,并且它不存在于C++ 11中。对于特定的正则表达式,是否仍然有一种直接的方法来迭代所有匹配项?我希望能够做到这样的事情:基于范围的for循环正则表达式匹配?
std::regex begin(" 1?2?3?4* ");
std::regex end;
for(auto& match: std::pair(begin, end)) process(*match);
在C++ 11中是否支持这种类型的东西?
我会在make_range()中为end = T()设置一个默认值。这样istream_iterator-s,实际上正则表达式迭代器可以使用单个arg创建。这是一个相当常见的成语。 – cristicbz