我有一个名为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?
}
}
Run Code Online (Sandbox Code Playgroud)
有关如何实现这一点的任何想法?
你有一个std :: map,它是std :: pairs的集合.每个std ::对都有一个键(pair :: first)和一个值(pair :: second).我相信你的迭代循环是正确的.但是在std :: pair上调用:: getDate()是错误的.您需要做的是以下内容:
std::cout << iter->second.getDate() << std::endl;
Run Code Online (Sandbox Code Playgroud)
迭代整个地图的另一个选择是使用基于范围的 for
for(auto const& d : data) {
std::cout << d.second.getDate() << std::endl;
}
Run Code Online (Sandbox Code Playgroud)