转发迭代器,如何返回const值

时间:2017-02-07 09:02:44

标签: c++ class struct iterator const

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

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

我为我的类定义了前向迭代器和const迭代器,迭代器需要返回返回i, j, val,但只有val可以修改,ij不能被修改。
我怎么能这样做?

2 个答案:

答案 0 :(得分:4)

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

http://localhost:<port number>

它的构造函数接受实际元素并存储对其字段的引用。只有 { "accounts": [ { "quantity": "200", "prodType": "stock", "symbol": "LOL", "side": "Buy", "status": "Completed", "prodDesc": "Εθνική τράπεζα", "market": "Greece", "averageCost": "131,16", "totalCost": "123,47", "lastPrice": "121,123", "value": "123,34", "positionPercentage": "10", "valueEUR": "113,23", "pl": "1300", "plPercentage": "12", "plEuro": "1238", "results": "12-01-2017", "dividend": "12-03-2017", "isin": "1234566" },... ] } 引用可以修改。

答案 1 :(得分:2)

在某些方面,由于你必须重写构造函数和赋值运算符,所以它可能是背后的痛苦,但你可以

template <typename T>
struct element{
    int i;
    int j;
    T val;
    const int& _i;
    const int& _j;
};

并将_i_j绑定到ij进行构建。您的前向迭代器会直接返回这些引用,而不是ij

如果有人能想出更好的方法,那么请低估这一点。