【问题标题】:Is the C++ Iterator STL a template, class or an interface? [duplicate]C++ Iterator STL 是模板、类还是接口? [复制]
【发布时间】:2018-09-14 13:40:48
【问题描述】:

我听说它总是被称为接口,但查看实际代码,它看起来不像接口。如果它不是接口,为什么用词不当?

编辑下方以获得更多说明。 我同意这个问题的措辞不是最好的,但它确实提出了一个令人困惑的话题。有问题的代码来自 cplusplus.com/reference/iterator/iterator

template <class Category, class T, class Distance = ptrdiff_t,
          class Pointer = T*, class Reference = T&>
  struct iterator {
    typedef T         value_type;
    typedef Distance  difference_type;
    typedef Pointer   pointer;
    typedef Reference reference;
    typedef Category  iterator_category;
  };

以及从此链接中阅读。 bogotobogo.com/cplusplus/stl3_iterators.php 我是从同事、同学甚至一些老师那里听到的。诸如此类的措辞,““迭代器的主要优点是它们为任何容器类型提供通用接口。”这里使用“接口”的方式与迭代器相关。

一位用户在下面指出,术语接口是通用的,并不总是像编写 C++ 接口时那样使用。

【问题讨论】:

  • 什么“实际代码”?
  • "我听说它总是被称为接口" 听说被称为接口,由谁?例如,我不记得听说过它被称为接口。
  • 我应该澄清一下。这就是我所指的。 cplusplus.com/reference/iterator/iterator
  • 如果没有奇怪的前提,如果你告诉我们你从哪里得到这个想法/你在谈论什么代码,这可能会成为一个不错的问题
  • “接口”的含义比较广泛。也可以说std::vector 为动态数组提供了一个方便的接口,但如果那是您的误解,那不会使std::vector 成为仅声明抽象方法的接口

标签: c++ stl iterator


【解决方案1】:

这些都不是。

其实是一个概念

概念在 C++ 中变得越来越重要,您应该尝试熟悉它们。见https://en.cppreference.com/w/cpp/language/constraints

【讨论】:

  • 据我了解,概念在 c++ 中已经存在很长时间了,而且是把它们放在一些坚实的正式基础上的时候了
  • @user463035818:绝对!
  • 应该注意的是,concept 这个词在 C++ 中已经有很多年的意义,但是 C++20 将把它从一个元规范变成一个实际的规范。语言功能。
  • 这个意义上的“概念”只是一种特殊的界面。
猜你喜欢
  • 2012-03-20
  • 1970-01-01
  • 2014-11-06
  • 1970-01-01
  • 2012-09-12
  • 2017-03-04
  • 2020-01-17
  • 1970-01-01
  • 2011-07-16
相关资源
最近更新 更多