c++ - 前向迭代器,如何返回 const 值

标签 c++ class struct iterator constants

我做了一个动态数组类,数组中的每个元素都是通过这样的结构定义的

template <typename T>
struct element{
    int i;
    int j;
    T val;
};

我为我的类定义了forward iterator和const iterator,迭代器需要返回返回i, j, val 但是只有val可以修改,i and j不可修改。
我该怎么做?

最佳答案

扩展@Bathsheba 的回答,你的迭代器可以返回这个结构:

template<typename T>
struct element_ref {
    const int& i;
    const int& j;
    T& val;

    element_ref(element& e) : i(e.i), j(e.j), val(e.val) {}
};

它的构造函数获取实际元素并存储对其字段的引用。只有 val 引用是可修改的。

关于c++ - 前向迭代器,如何返回 const 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42085590/

相关文章:

c++ - 从 Objective-C 调用 C++

python - Mongoengine 中的 "QuerySet"对象到底是什么?

c# - 覆盖接口(interface)的返回类型

javascript - 访问类中的构造函数属性

arrays - 在 Swift 中将实例变量的属性保存到结构的静态变量数组

c - 如何定义包含指向自身的指针的 typedef 结构?

xml - 在元素标记Golang中解码包含 “:”的xml

C++ 以最优雅的方式同步线程

c++ - 使用 C++ 在 32 位 Linux 中查找进程可用的剩余内存

c++ - fatal error : google/protobuf/port_def. inc:没有这样的文件或目录