嵌套映射将第二个键检测为重复
Nested map detecting second key as duplicate
我有以下代码循环访问包含日期、时间和 WindLogType 的另一种数据类型的向量
for(unsigned int i = 0;i<holder.size();i++)
{
Date date = holder[i].GetDate();
Time time = holder[i].GetTime();
WindLogType wlt = holder[i].GetWindLogType();
DD[date][time] = wlt;
}
我的地图:
typedef map <Time,WindLogType> minuteIntervalData;
typedef map <Date,minuteIntervalData> DayData;
日期包含日期,例如。 26/11/2000
时间包含小时和分钟,例如。 11:23
WindLogType 包含 3 个类型为 double
的值
但是,当我尝试遍历向量以插入地图时,地图检测到同一日期的时间重复
例如[26/11/2000][11:23] [26/11/2000][11:25]
这两对键都被地图识别为重复项,不会将值插入地图。我已经检查了日期和时间的重载运算符“<”类,但它们似乎没问题
日期:
bool Date::operator < (const Date& D) const
{
if (m_year < D.GetYear())
{
return true;
}
if (m_year > D.GetYear())
{
return false;
}
if (m_month < D.GetMonth())
{
return true;
}
if (m_month > D.GetMonth())
{
return false;
}
if (m_day < D.GetDay())
{
return true;
}
}
时间:
bool Time::operator < (const Time& T) const
{
if (m_hours<T.GetHours())
{
return true;
}
if (m_hours>T.GetHours())
{
return false;
}
if (m_minutes<T.GetMinutes())
{
return true;
}
if (m_minutes>T.GetMinutes())
{
return false;
}
}
对于两个比较运算符,都有一个没有 return 语句的执行路径。在第一种情况下,如果年和月相同但日期大于您比较的日期,就会发生这种情况,对于第二种情况,我将留给您来解决。
我有以下代码循环访问包含日期、时间和 WindLogType 的另一种数据类型的向量
for(unsigned int i = 0;i<holder.size();i++)
{
Date date = holder[i].GetDate();
Time time = holder[i].GetTime();
WindLogType wlt = holder[i].GetWindLogType();
DD[date][time] = wlt;
}
我的地图:
typedef map <Time,WindLogType> minuteIntervalData;
typedef map <Date,minuteIntervalData> DayData;
日期包含日期,例如。 26/11/2000 时间包含小时和分钟,例如。 11:23 WindLogType 包含 3 个类型为 double
的值但是,当我尝试遍历向量以插入地图时,地图检测到同一日期的时间重复
例如[26/11/2000][11:23] [26/11/2000][11:25]
这两对键都被地图识别为重复项,不会将值插入地图。我已经检查了日期和时间的重载运算符“<”类,但它们似乎没问题
日期:
bool Date::operator < (const Date& D) const
{
if (m_year < D.GetYear())
{
return true;
}
if (m_year > D.GetYear())
{
return false;
}
if (m_month < D.GetMonth())
{
return true;
}
if (m_month > D.GetMonth())
{
return false;
}
if (m_day < D.GetDay())
{
return true;
}
}
时间:
bool Time::operator < (const Time& T) const
{
if (m_hours<T.GetHours())
{
return true;
}
if (m_hours>T.GetHours())
{
return false;
}
if (m_minutes<T.GetMinutes())
{
return true;
}
if (m_minutes>T.GetMinutes())
{
return false;
}
}
对于两个比较运算符,都有一个没有 return 语句的执行路径。在第一种情况下,如果年和月相同但日期大于您比较的日期,就会发生这种情况,对于第二种情况,我将留给您来解决。