- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我知道 C++ 中没有迭代器的抽象基类,但我有一个具体问题找不到答案。在 list::begin() 的文档中给出了这个遍历列表的例子:
std::cout << "mylist contains:";
for (std::list<int>::iterator it=mylist.begin(); it != mylist.end(); ++it)
std::cout << ' ' << *it;
...
对于 list::rbegin()这是给出的:
std::cout << "mylist backwards:";
for (std::list<int>::reverse_iterator rit=mylist.rbegin(); rit!=mylist.rend(); ++rit)
std::cout << ' ' << *rit;
...
我真的必须指定迭代器是列表迭代器吗- std::list<int>::iterator
?这意味着我无法在来自不同容器的相同类型(比如 int
)的迭代器之间进行概括?!此外,我真的必须区分 std::list::iterator 和 std::list::reverse_iterator 吗?根据文档,它们都是 ForwardIterators ?
我怎样才能避免这些资格?这似乎违背了拥有迭代器的全部意义。
最佳答案
您标记了 C++11,因此为了避免这些声明,您可以使用范围 for-loop
在 begin()
和 end( )
:
std::cout << "mylist contains:";
for (auto item : mylist)
std::cout << item << *it;
是的,您需要区分反向迭代器的情况,因为它们确实是另一种类型的迭代器(在 std::list
上反向,这是一个双向链表,所以你的循环的输出确实会有所不同)。
编辑:
避免为不同容器或迭代器类型编写手工循环的 STL 方法是使用将一对迭代器作为参数的通用算法:
std::for_each (mylist.begin(), mylist.end(), myfunction);
因此,您可以在任何类型的容器或迭代器中重用您的算法,而无需重写代码。这样的算法是模板,以迭代器类型为模板,允许在某些情况下提供特化(例如,使用随机迭代器比使用前向迭代器更容易执行 std::sort)。
关于C++ Iterator generalize - 不同的容器,相同的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24132377/
崩溃报告: *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[_UIConc
我的 Google Charts 信息中心有问题。目前一切正常,除了柱形图在 Y 轴上显示字符串而不是整数。 我发现 Google 图表页面上的文档很难理解,所以如果我的代码中有错误,或者如果有更简单
我在 VS 项目编译中收到警告。尽管编译成功,但我无法获得文件的输出。您知道如何设置上述每一项吗? 它是在谈论哪个命令和outfile文件?应该给出什么路径? //testlib.h #include
有问题的设置: 我知道: xcode构建 -parallelizeTargets -maximum-concurrent-test-device-destinations NUMBER -maximu
我开始学习 UML,并且有一个关于 Actor 泛化的问题: 假设我正在为某所大学的某种应用程序编写用例图。我已经确定有两个 Actor ;学生和老师。 现在,为了简单起见,假设要求相当简单(对我的问
我经常需要实现一个能够根据用户命令切换其行为的对象。例如,这可能是连接到 PC 并由用户通过 GUI 控制的类表示设备的情况。更一般地说,设备必须独立存在,有自己的操作调度。 由于我想从特定设备类中“
题目地址:https://leetcode-cn.com/problems/generalized-abbreviation/ 题目描述 Write a function to generate
我刚刚在我的程序中添加了一个 ui 搜索栏,每次我重新运行该程序时,我都会收到错误消息 -[一般] 与守护程序的连接无效尽管如此,我的应用程序仍能完美运行,而且我似乎无法分辨出哪里出了问题。 有谁知道
这可能是一个简单的问题,但我找不到解决方案。我有一个带有 PostDate 列的 Excel 电子表格,其值为:VLOOKUP(E2,upload!A:H,2,FALSE)它显示为日期。我将此电子表格
我一直在尝试学习使用 Isabelle 2016。虽然原则上我喜欢异步证明检查的想法,但我不喜欢 Isabelle/jEdit 的原因有很多,其中最严重的是它使用了太多内存(为了我)。 如果我能在 I
我想弄清楚如何修改单个产品选项,以便产品管理员可以从下拉列表中选择产品的状况,即新的/二手的。 以下是允许产品管理员手动输入产品条件的代码。 // Enabling and Displaying Fi
这很清楚 destruct H如果 H包含连词或析取。但我无法弄清楚它在一般情况下的作用。它做了一些奇怪的事情,特别是如果 H: a -> b . 一些例子: Lemma demo : forall
这是我项目的例子: [ https://codepen.io/adan96/pen/ExaRgOe][1] 如您所见,我的 html 代码中有三个按钮。每次刷新页面或一段时间后打开项目时,是否应单击第
我有一个方法想将一个自定义枚举类型的数组作为参数。 看起来像这样的东西: public void DoSomething(WhatDoIPutHere[] parameters) 我想将 Enum1[
我正在构建一个网站,用户可以在其中清点项目并向其应用各种属性,例如。照片、网址、评论等。 我有一个包含三个表的数据库结构: users , entries , associations . 这些表具有
我正在寻找有关构建程序的最佳方式的建议。这是我现在所拥有的,以及我在设计中看到的问题: 我有一个带有私有(private)构造函数和 submit() 方法的类,用于仔细控制创建的对象,并将创建的每个
假设我有一个 4 维张量 A,我想按以下方式将它与 3 维张量 B 相乘: C[i,k,a,b] = sum_{j,l} A[i,j,k,l]*B[a,j,b,l] 这是矩阵乘法的推广: z[i,k]
我试图理解最坏情况分析,想知道在最坏情况运行时间分析中使用时是否有某种方式可以解释术语广义示例? 我的第一个想法是它是根据输入的特征来分析性能,但我觉得应该有更正式的方式来解释它,也许使用顺序符号?
NXN 矩阵中的“广义对角线”是 N 个单元格的选择,这样: 从每一行和每一列中只选择一个单元格 每个选定的单元格都包含一个非零值 我正在寻找一种算法来在 O(n^3) 中找到广义对角线。在我看来,以
Realm 新手,我想知道如何使用 RealmSwift 构建树结构... 我倾向于认为这是对文件系统文件夹概念的模仿,所以, class Folder: Object { dynamic v
我是一名优秀的程序员,十分优秀!