我有一个名为SAR的类,它包含一个带有int键值的映射和我的SARdataPoint类型的对象数据值。 SARdataPoint类型有一个函数int getDate(),我想为映射中包含的每个对象调用它。我无法绕过如何实现这一目标。我想我已经结束了。
class SAR
{
public:
// other attributes removed for compactness
std::map<int, SARdataPoint> data;
}; // end of class SAR
void SAR::printSAR()
{
for(auto iter = this->data.cbegin(); iter != this->data.cend(); ++iter)
{
std::cout << iter->getDate() << '\n'; //incorrect but close?
}
}
关于如何实现这一点的任何想法?
答案 0 :(得分:6)
你有一个std :: map,它是std :: pairs的集合。每个std ::对都有一个键(pair :: first)和一个值(pair :: second)。我相信你的迭代循环是正确的。但是在std :: pair上调用:: getDate()是错误的。您需要做的是:
std::cout << iter->second.getDate() << std::endl;
迭代整个地图的另一个选择是使用基于范围的for
for(auto const& d : data) {
std::cout << d.second.getDate() << std::endl;
}