如何迭代多重映射以满足 IF 条件 - C++
How to iterate over a multimap to satisfy an IF condition - C++
我有两个多图,一个带有日期和浮点数,另一个带有时间和浮点数。两个地图都有重复的值。在以日期为键的多图中,我对其进行迭代并存储用户输入的日期的 maximum 浮点值。然后,在我的下一张地图中,我想检索该值存在的日期的时间。 (我所有的数据都来自一个包含我需要的所有这些值的向量)。我的目标是打印出某个日期具有最大浮点值的时间,因此它可能是一次或多次。
目前,我的程序打印出所有包含该浮点值的时间,包括不属于用户输入日期的时间。我该如何修正我的逻辑,以便我只检索具有用户输入日期的时间以及最大值?
代码:
float maxVal = 0;
for(std::multimap<Date, float>::iterator it = mapOption5Solar.begin(); it!=mapOption5Solar.end(); it++)
{
if(checkDate == it->first)
{
if(maxVal < it->second)
{
maxVal = it->second;
}
}
}
for(std::multimap<Time, float>::iterator it = mapOption5Time.begin(); it != mapOption5Time.end(); it++)
{
if(maxVal == it->second)
{
timeVec.add(it->first);
}
}
如果Date
和Time
没有连接,那就没办法了。您无法将时间与特定日期匹配。
我建议创建一个结构,如下所示,并将您的数据存储在 multimap<DateTime, float>
struct DateTime {
Date date;
Time time;
};
之后可以写
float maxVal = 0;
for(const auto& [dateTime, value] : mapOption5)
{
if(checkDate == dateTime)
{
if(maxVal < value)
{
maxVal = value;
}
}
}
for(const auto& [dateTime, value] : mapOption5)
{
if((checkDate == dateTime) && (maxVal == value)
{
timeVec.add(value);
}
}
我有两个多图,一个带有日期和浮点数,另一个带有时间和浮点数。两个地图都有重复的值。在以日期为键的多图中,我对其进行迭代并存储用户输入的日期的 maximum 浮点值。然后,在我的下一张地图中,我想检索该值存在的日期的时间。 (我所有的数据都来自一个包含我需要的所有这些值的向量)。我的目标是打印出某个日期具有最大浮点值的时间,因此它可能是一次或多次。
目前,我的程序打印出所有包含该浮点值的时间,包括不属于用户输入日期的时间。我该如何修正我的逻辑,以便我只检索具有用户输入日期的时间以及最大值?
代码:
float maxVal = 0;
for(std::multimap<Date, float>::iterator it = mapOption5Solar.begin(); it!=mapOption5Solar.end(); it++)
{
if(checkDate == it->first)
{
if(maxVal < it->second)
{
maxVal = it->second;
}
}
}
for(std::multimap<Time, float>::iterator it = mapOption5Time.begin(); it != mapOption5Time.end(); it++)
{
if(maxVal == it->second)
{
timeVec.add(it->first);
}
}
如果Date
和Time
没有连接,那就没办法了。您无法将时间与特定日期匹配。
我建议创建一个结构,如下所示,并将您的数据存储在 multimap<DateTime, float>
struct DateTime {
Date date;
Time time;
};
之后可以写
float maxVal = 0;
for(const auto& [dateTime, value] : mapOption5)
{
if(checkDate == dateTime)
{
if(maxVal < value)
{
maxVal = value;
}
}
}
for(const auto& [dateTime, value] : mapOption5)
{
if((checkDate == dateTime) && (maxVal == value)
{
timeVec.add(value);
}
}