首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对用户制造的容器符合range-v3的要求

对用户制造的容器符合range-v3的要求
EN

Stack Overflow用户
提问于 2017-01-08 15:56:10
回答 1查看 180关注 0票数 2

我在想,用户定义的容器要与Range-v3(算法...)一起使用有什么新要求?

例如,我们需要在设计中更改什么(成员类型、成员函数...)在标准意义上?如何遵守Range-v3算法的概念?我们需要提供哪些成员函数?迭代器有哪些变化?

迭代器/begin/end的替代品是什么?

代码语言:javascript
复制
template<typname T>
struct container
{
    //...
    using value_type = T;
    //...
    using iterator = value_type*;
    using const_iterator = const value_type*;
    //...
    iterator begin() { //... }
    //...
};

如果有人能给出一个规范的容器实现,那就太好了。

Range-v3带来了哪些新的想法/概念?新的C++编码方式是什么?

EN

回答 1

Stack Overflow用户

发布于 2017-04-07 16:07:08

据我所知,范围本身只需要有返回有效迭代器的beginend成员。迭代器可能更难正确处理。据我所知,最弱的迭代器(即需要最少成员的迭代器)需要以下成员:

  1. 默认constructor
  2. copy constructor
  3. operator =
  4. operator ++ (在pre和post forms)
  5. operator *
  6. operator ==
  7. operator !=
  8. Publicly中都继承自std::iterator的适当实例化,因此它有正确的类型成员可用--虽然这在C++17中已被弃用,因此您可能更喜欢手动添加类型。

你可以静态地断言这些概念,这应该会帮助你弄清楚你需要什么:

代码语言:javascript
复制
static_assert(ranges::Iterator<my_iterator>(), "Not Iterator");
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41530677

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档