问题标签 [const-iterator]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
75 浏览

c++ - 搜索 const std::map

我正在学习我的一门课程,但遇到了一个绊脚石。我会给你一个我的源代码的示例,只是类名、方法名和变量名不同,但实现是相同的。您将在相应功能的代码块中看到我的问题、问题和关注点。

我的类.h

我的类.cpp

在我的资料中,第二个功能比第一个更重要!非常感谢任何帮助或建议。

0 投票
2 回答
1713 浏览

c++ - 简单迭代器差异上的“与运算符不匹配”错误

这是我的代码:

我越来越error: no match for 'operator-' in 'st.std::set<_Key, _Compare, _Alloc>::find [with _Key = int, _Compare = std::less<int>, _Alloc = std::allocator<int>](((const int&)((const int*)(&1)))) - st.std::set<_Key, _Compare, _Alloc>::begin [with _Key = int, _Compare = std::less<int>, _Alloc = std::allocator<int>]()'

我无法弄清楚迭代器差异是如何突然停止工作的!我在这里错过了什么吗?

0 投票
2 回答
102 浏览

c++ - 将对象转换为向量的 const_iterator

嗨,我有一个std::vector<T>::const_iterator作为参数的函数。

问题是:

如何将 T 类型的独立对象转换为迭代器,以便将其用作参数?

0 投票
2 回答
618 浏览

c++ - 自制迭代器的 const 正确性

总体目标

我管理一组对象(Collection作为Real简单示例)。然后我在我的集​​合上定义了迭代器。这意味着:iterator、、const_iteratorreverse_iteratorconst_reverse_iterator在这个例子中,我只关注iteratorconst_iterator,其他两个非常相似。

之后,我想在我的集合上定义一个过滤器,它根据特定条件保留或不保留元素。例如,只保留Real具有正值的实例。我还想仅在保留元素上迭代我的集合。

我是如何实现收藏的

对于这个例子,我在集合中的对象非常简单。目标只是拥有一个对象而不是本机类型:

然后我定义我的收藏,而不必知道里面的真实容器:

这在这个简单的示例中运行良好:

这个程序写出预期的输出:

我是如何实现过滤器的

现在我想创建一个抽象过滤器,有一个集合的引用或指针,有迭代器,并有一个通过过滤器接受值的抽象函数。对于这第一步,我只编写了没有迭代器的类:

然后,很容易创建一个实现特定条件的新过滤器:

在过滤器中实现迭代器之前,我有一些评论/问题。

  1. 这个过滤器适用于非常量Collection&,那么,真的需要begin() constandend() const函数吗?如果是,为什么?
  2. 我不能在 a 上应用过滤器const Collection&,但它显然是我的目标所必需的。有什么好方法可以做到这一点?我是否必须将该类复制CollectionFilterCollectionFilterConst具有非常相似代码的类?此外,这种解决方案对于必须从两个相似类继承的用户来说是相当混乱的。

然后,让我们看看迭代器的实现。对于这个例子,我只写了iterator而不是const_iterator. 我将此添加到我的课程中:

这在这个简单的例子上也很有效

给出预期的输出:

再次,一些问题:

  1. 我对这种方法完全错误吗?
  2. 我想我必须复制代码CollectionFilter::iterator来实现CollectionFilter::const_iterator,只需进行少量修改。有没有办法避免重复这段代码(如果我计算重复的类CollectionFilterConst和反向迭代器,写了 8 次)?
  3. 我对我的代码的 const 正确性感到不舒服。你看到一些问题了吗?

提前致谢 !

0 投票
2 回答
786 浏览

c++ - 来自 const_iterator 取消引用的赋值会导致未定义的行为吗?

这段代码是对我在其他地方尝试做的事情的简化测试。我有一个函数,它接受一个“ref-to-ptr”参数并修改它以从指针列表中返回一个指针。

它按预期工作和打印ip = 3,只是我担心它可能会导致未定义的行为或导致麻烦,因为我通过将其取消引用的结果分配给参数来剥离迭代器的常量。我试图const在 (1) 和 (2) 处添加,但它没有构建。

我担心是对的吗?如果是这样,为什么我没有收到来自 g++ (4.9.2) 的警告?

0 投票
1 回答
699 浏览

c++ - c ++范围的排序视图-如何创建const_iterator?

我正在尝试编写一个类,该类应充当某些基础元素序列的排序视图。到目前为止,我想出了一个非const版本。现在我在调整它以提供const_iterator功能时遇到了问题。

到目前为止,我的代码如下所示:

对应的迭代器如下所示:

使用示例如下所示:

输出:

我如何调整我的迭代器以适应这种const情况?如果迭代器将在基础类型(int例如)上进行模板化,则会更容易InputIt。有没有更好的方法来定义这个类?

我想可以通过使用range-v3库来解决这个问题,但是我试图不再添加任何依赖项并依赖 C++11/14 函数。

0 投票
4 回答
482 浏览

c++ - 为什么 const_iterator 不提供类似 reverse_iterator 的基础?

为什么不const_iterator提供一个const_iterator::base()函数,来获取对应的非常量iterator就好了reverse_iterator呢?

考虑以下伪代码(例如几何算法):

universe所有输入点在哪里。在 -之后sieve(),将interesting_subsetcontains 迭代器指向universe's 成员的子集。以下algorithm()构造structure来自的结果interesting_subset,其中包含对 . 成员的引用(迭代器)universe

最后,我想改变points,包含结果structure(比如,移动它们)。但同样我想保护他们在algorithm行动中不被修改,因此我使用std::cbegin/std::cendstd::begin/相对std::end。最后,我只const_iterator引用了 source point

iterator std::container< T >::const_iterator::base() const这是我希望出现在 STL 容器中的成员函数的一个非常用例。

0 投票
2 回答
445 浏览

c++ - C++,使用 const_iterator 制作 operator= 时遇到问题

当我编写以下内容时发生编译错误:

const_iterator是我自己的课const iterator
cp是一个类的对象ConjuntoPreguntas(见下文)。
错误是:

编码:

如果有人可以帮助我,我将不胜感激。

0 投票
1 回答
245 浏览

c++11 - 如何正确使用 const_iterator?

我正在尝试使用来自 stl lib 的地图制作一个容器类,但我对const_iterator.

在我的课堂ConjuntoPreguntas上如何欣赏,我尝试使用不同的格式begin()end()方法,但我没有找到正确的方法。

在我的主课中,我尝试使用imprimir函数,即接收const ConjuntoPreguntas,但存在问题。所以我需要使用const ConjuntoPreguntas&.

0 投票
1 回答
2986 浏览

c++ - 实现我自己的列表和迭代器 STL C++

大家好,

我在大学的项目中使用迭代器实现我自己的列表时遇到问题。我应该怎么做才能正确迭代循环?有人可以帮我吗?对不起,如果我的英语不正确。

我想像第一个循环甚至第二个循环一样遍历我的 List。