我有以下类型:如何访问std :: vector迭代器中的std :: map属性?
typedef std::map<std::string, double> Tick;
和向量:
std::vector<Tick> dataSegment;
我想通过向量来迭代和计算每个地图项的特定属性的总和:
double sum = 0.0;
for (std::vector<Tick>::iterator iterator = dataSegment.begin(); iterator != dataSegment.end(); ++iterator) {
sum += iterator->find("close");
}
但是,当我这样做时,出现以下错误:
error: invalid operands to binary expression ('double' and 'iterator' (aka '__map_iterator<__tree_iterator, double>, std::__1::__tree_node, double>, void *> *, long> >')) sum += iterator->find("close");
我也试过:
for (std::vector<Tick>::iterator iterator = dataSegment.begin(); iterator != dataSegment.end(); ++iterator) {
sum += (*iterator).find("close");
}
但这会产生类似的错误:
invalid operands to binary expression ('double' and 'iterator' (aka '__map_iterator<__tree_iterator, double>, std::__1::__tree_node, double>, void *> *, long> >')) sum += (*iterator).find("close");
'sf :: map :: find'返回一个迭代器,而不是一个值。 – Hiura
啊!这是真的,看文档。我如何访问一个属性? –
通过推论。 – Hiura