Ranges TS缺少什么

Ranges TS甚至没有合并到C ++中,我已经发现了一些值得抱怨的地方。 😉

快速测验。

标记为// 1和// 2的以下哪几行有效(编译)? 假设所需的#includes存在,并且编译器可以与range-v3库一起正常工作。


这可能会让您感到惊讶,但实际上标记为// 1的行是可以的,而标记// 2的行则不是。

但是他们看起来和我相似吗?

好吧…对我也是。 😃问题/功能是数组衰减到指针,而range :: copy不知道如何输出到容器,因此这里ab只是一个指针/迭代器(就像您写&ab [0]一样)。

范围TS很乐意采用源参数容器,因为它是一个范围,但是输出必须是迭代器。

在我对STL容器和容器适配器的专业分析中,它们都至少具有一种有效的插入成员功能。

  • 插入
  • push_front
  • 推回

另一个无用的快速测验。

哪个STL容器没有上面列出的成员函数中的1个而是2个?


如果您知道某些容器是如何命名的,以及大约一个很少使用的容器,答案很简单。

那我想要过圣诞节的range :: copy超载是什么?

这是我给圣诞老人的信中的一部分

光荣地。 我显然在猜测,但是我认为这会起作用:

  • 复制的重载和其他范围算法将容器作为最后一个参数添加
  • 根据容器的类型(更确切地说是成员函数),范围逻辑知道如何在容器中插入。

我不同意,因为我不会写这篇文章只是为了诱骗人们……嗯……没关系。

我的观点是,对于常见模式,可以简短些。 例如,unique_ptr未命名为unique_pointer。

因此,我认为在开始使用范围之后,您将不会庆幸范围会提醒您使用push_back向vector添加元素。 只会是噪音。

免责声明:这是可能的(平均人会说可能😉),因为我不是range-v3的日常用户,而且我不是库开发人员,所以我在本文的研究中错过了一些东西。