C++20提供了range来简化对迭代器的使用,可以认为range是一个封装了begin和end的对象。
template< class T >
concept range = requires( T& t ) {
ranges::begin(t); // equality-preserving for forward iterators
ranges::end (t);};文章来源:https://www.toymoban.com/news/detail-542103.html
而对于end,range将它认为是迭代器哨位,并不要求end一定是一个跟begin相同类型的迭代器,只要可以通过end哨位进行比较就可以:文章来源地址https://www.toymoban.com/news/detail-542103.html
#include <algorithm>
#include <iostream>
using namespace std;
struct SpaceIsEnd {
bool operator==(auto pos) const {
return *pos == ' ';
}
};
class CommasIsEnd {
public:
bool operator==(auto pos) const {
return *pos == ',';
}
};
int main()
{
const char *str =
到了这里,关于C++(20):range的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!