相关疑难解决方法(0)

正在弃用的std :: iterator的准备工作

3月21 ,标准委员会投票赞成批准P0174std::iterator提议的弃用:

对于读者而言,很长的void参数序列不仅仅是简单地typedef在类定义本身中提供预期的s,这是当前工作草案采用的方法,遵循设置的模式

之前std::iterator,鼓励继承从迭代器样板实现中删除乏味.但弃用将需要以下其中一项:

  1. 迭代器样板现在需要包含所有必需的typedefs
  2. 使用迭代器的算法现在需要使用auto而不是依赖于迭代器来声明类型
  3. 洛基阿斯塔曾建议std::iterator_traits,可以更新,而继承工作std::iterator

有人可以告诉我我应该期待哪些选项,因为我设计了自定义迭代器,着眼于兼容性?

c++ standards iterator deprecated c++17

58
推荐指数
2
解决办法
1万
查看次数

定义我自己的容器的迭代器

我对一些关于定义我自己的迭代器的概念感到困惑:

从这里:http://www.cs.northwestern.edu/~riesbeck/programming/c++/stl-iterator-define.html,这似乎建议使用定义运算符的内部迭代器类.许多其他人继承基类iterator来重新定义运算符.

我对应该使用哪种方法感到很困惑.为什么会这样

typedef ptrdiff_t difference_type;
Run Code Online (Sandbox Code Playgroud)

例如,在容器类的定义的开头?

非常感谢你!

c++ iterator

12
推荐指数
1
解决办法
6417
查看次数

如果不推荐使用 std::iterator ,我们还应该使用需要 std::iterator 的类或函数吗?

我听说std::iterator在 C++17 中不推荐使用。

例如,像功能<algorithm>,更可能我们要使用begin()end()它返回迭代器对象,如成员函数std::stringstd::vector等等。

或者像基于范围的 for 循环,我们需要的地方begin()以及end()返回迭代器的地方。

因此,如果std::iterator基类被弃用,我们是否应该使用成员函数,如begin()end()或使用 STL 中需要迭代器的其他函数?

c++ iterator for-loop c++17

9
推荐指数
2
解决办法
329
查看次数

iterator_traits的设计目的是什么?

C++ 标准库定义了iteratoriterator_traits模板。看来一般来说,iterator_traits只是提取 中明确定义的属性iterator。如果iterator_traits要使用a则iterator直接使用对应的即可。T*如果需要某种类型的专门化(例如),则 的专门化iterator可以满足要求。这种间接的好处是什么?

c++ templates std

1
推荐指数
1
解决办法
783
查看次数

标签 统计

c++ ×4

iterator ×3

c++17 ×2

deprecated ×1

for-loop ×1

standards ×1

std ×1

templates ×1