我不确定我是否已经针对我实际要问的内容发布了正确的问题,但现在确实如此。我正在尝试从sumofrain
向量打印最大和最小降雨量以及yearly
向量中的相应年份。
为了明确sumofrain
向量中的最大降雨量是向量中的第7个值,那么我想要输出的年份是yearly
向量中的第7个值。
答案 0 :(得分:1)
鉴于向量yearly
和sumofrain
不锯齿状,您只需检查距离开头的距离。
// Get iterator to the max element in container.
auto it = std::max_element(std::begin(sumofrain), std::end(sumofrain));
// Get index of element pointed to by iterator.
auto index = std::distance(std::begin(sumofrain), it);
auto maxRain = *it;
auto maxYear = yearly[index];
std::cout << "Wettest year: " << maxYear << ". ";
std::cout << "Rainfall recorded: " << maxRain << " mm." << std:: endl;
答案 1 :(得分:0)
将雨量总和存储在年度地图中 - &gt;双
std::map<int, double> rainfall;
while(file >> year >> month >> maxdeg >> mindeg >> afdays >> rainmm >> sunhours)
{
rainfall[year] += rainmm;
frost.push_back(afdays);
}
然后,当文件完成阅读时,通过例如,找到具有最低/最高降雨量的地图中的条目。 Finding minimum value in a Map
你得到的迭代器有->first
年份和->second
,这是当年的实际降雨量。
答案 2 :(得分:0)
您应该将max_element(sumofrain.begin(),sumofrain.end())
返回的迭代器存储到变量中。
auto itMax = max_element(sumofrain.begin(),sumofrain.end());
然后,找出找到的元素的从零开始的索引:
itMax - sumofrain.begin();
找到价值:
*itMax