我有以下類型:如何訪問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