问题标签 [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.
c++ - 搜索 const std::map
我正在学习我的一门课程,但遇到了一个绊脚石。我会给你一个我的源代码的示例,只是类名、方法名和变量名不同,但实现是相同的。您将在相应功能的代码块中看到我的问题、问题和关注点。
我的类.h
我的类.cpp
在我的资料中,第二个功能比第一个更重要!非常感谢任何帮助或建议。
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>]()'
。
我无法弄清楚迭代器差异是如何突然停止工作的!我在这里错过了什么吗?
c++ - 将对象转换为向量的 const_iterator
嗨,我有一个std::vector<T>::const_iterator
作为参数的函数。
问题是:
如何将 T 类型的独立对象转换为迭代器,以便将其用作参数?
c++ - 自制迭代器的 const 正确性
总体目标
我管理一组对象(Collection
作为Real
简单示例)。然后我在我的集合上定义了迭代器。这意味着:iterator
、、const_iterator
和reverse_iterator
。const_reverse_iterator
在这个例子中,我只关注iterator
和const_iterator
,其他两个非常相似。
之后,我想在我的集合上定义一个过滤器,它根据特定条件保留或不保留元素。例如,只保留Real
具有正值的实例。我还想仅在保留元素上迭代我的集合。
我是如何实现收藏的
对于这个例子,我在集合中的对象非常简单。目标只是拥有一个对象而不是本机类型:
然后我定义我的收藏,而不必知道里面的真实容器:
这在这个简单的示例中运行良好:
这个程序写出预期的输出:
我是如何实现过滤器的
现在我想创建一个抽象过滤器,有一个集合的引用或指针,有迭代器,并有一个通过过滤器接受值的抽象函数。对于这第一步,我只编写了没有迭代器的类:
然后,很容易创建一个实现特定条件的新过滤器:
在过滤器中实现迭代器之前,我有一些评论/问题。
- 这个过滤器适用于非常量
Collection&
,那么,真的需要begin() const
andend() const
函数吗?如果是,为什么? - 我不能在 a 上应用过滤器
const Collection&
,但它显然是我的目标所必需的。有什么好方法可以做到这一点?我是否必须将该类复制CollectionFilter
到CollectionFilterConst
具有非常相似代码的类?此外,这种解决方案对于必须从两个相似类继承的用户来说是相当混乱的。
然后,让我们看看迭代器的实现。对于这个例子,我只写了iterator
而不是const_iterator
. 我将此添加到我的课程中:
这在这个简单的例子上也很有效
给出预期的输出:
再次,一些问题:
- 我对这种方法完全错误吗?
- 我想我必须复制代码
CollectionFilter::iterator
来实现CollectionFilter::const_iterator
,只需进行少量修改。有没有办法避免重复这段代码(如果我计算重复的类CollectionFilterConst
和反向迭代器,写了 8 次)? - 我对我的代码的 const 正确性感到不舒服。你看到一些问题了吗?
提前致谢 !
c++ - 来自 const_iterator 取消引用的赋值会导致未定义的行为吗?
这段代码是对我在其他地方尝试做的事情的简化测试。我有一个函数,它接受一个“ref-to-ptr”参数并修改它以从指针列表中返回一个指针。
它按预期工作和打印ip = 3
,只是我担心它可能会导致未定义的行为或导致麻烦,因为我通过将其取消引用的结果分配给参数来剥离迭代器的常量。我试图const
在 (1) 和 (2) 处添加,但它没有构建。
我担心是对的吗?如果是这样,为什么我没有收到来自 g++ (4.9.2) 的警告?
c++ - c ++范围的排序视图-如何创建const_iterator?
我正在尝试编写一个类,该类应充当某些基础元素序列的排序视图。到目前为止,我想出了一个非const
版本。现在我在调整它以提供const_iterator
功能时遇到了问题。
到目前为止,我的代码如下所示:
对应的迭代器如下所示:
使用示例如下所示:
输出:
我如何调整我的迭代器以适应这种const
情况?如果迭代器将在基础类型(int
例如)上进行模板化,则会更容易InputIt
。有没有更好的方法来定义这个类?
我想可以通过使用range-v3库来解决这个问题,但是我试图不再添加任何依赖项并依赖 C++11/14 函数。
c++ - 为什么 const_iterator 不提供类似 reverse_iterator 的基础?
为什么不const_iterator
提供一个const_iterator::base()
函数,来获取对应的非常量iterator
就好了reverse_iterator
呢?
考虑以下伪代码(例如几何算法):
universe
所有输入点在哪里。在 -之后sieve()
,将interesting_subset
contains 迭代器指向universe
's 成员的子集。以下algorithm()
构造structure
来自的结果interesting_subset
,其中包含对 . 成员的引用(迭代器)universe
。
最后,我想改变point
s,包含结果structure
(比如,移动它们)。但同样我想保护他们在algorithm
行动中不被修改,因此我使用std::cbegin
/std::cend
与std::begin
/相对std::end
。最后,我只const_iterator
引用了 source point
。
iterator std::container< T >::const_iterator::base() const
这是我希望出现在 STL 容器中的成员函数的一个非常用例。
c++ - C++,使用 const_iterator 制作 operator= 时遇到问题
当我编写以下内容时发生编译错误:
const_iterator
是我自己的课const iterator
。
cp
是一个类的对象ConjuntoPreguntas
(见下文)。
错误是:
编码:
如果有人可以帮助我,我将不胜感激。
c++11 - 如何正确使用 const_iterator?
我正在尝试使用来自 stl lib 的地图制作一个容器类,但我对const_iterator
.
在我的课堂ConjuntoPreguntas
上如何欣赏,我尝试使用不同的格式begin()
和end()
方法,但我没有找到正确的方法。
在我的主课中,我尝试使用imprimir
函数,即接收const ConjuntoPreguntas
,但存在问题。所以我需要使用const ConjuntoPreguntas&
.
c++ - 实现我自己的列表和迭代器 STL C++
大家好,
我在大学的项目中使用迭代器实现我自己的列表时遇到问题。我应该怎么做才能正确迭代循环?有人可以帮我吗?对不起,如果我的英语不正确。
我想像第一个循环甚至第二个循环一样遍历我的 List。