迭代一个int和object的映射

时间:2014-06-23 23:13:14

标签: c++ map iterator

我有一个名为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?
    }
}

关于如何实现这一点的任何想法?

1 个答案:

答案 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;
}