我制作了一个动态数组类,数组中的每个元素都是通过像这样的结构来定义的
template <typename T>
struct element{
int i;
int j;
T val;
};
我为我的类定义了前向迭代器和const迭代器,迭代器需要返回返回i, j, val
,但只有val可以修改,i
和j
不能被修改。
我怎么能这样做?
答案 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
绑定到i
和j
进行构建。您的前向迭代器会直接返回这些引用,而不是i
和j
。
如果有人能想出更好的方法,那么请低估这一点。