向量引用C++

vector referencing C++

本文关键字:C++ 引用 向量      更新时间:2023-10-16

不确定我是否提出了正确的问题,但问题就在这里。我正在尝试打印sumofrain矢量中的最大和最小降雨量,以及yearly矢量中的相应年份。

为了明确,如果sumofrain矢量中的最大降雨量是矢量中的第7个值,那么我希望输出的年份是yearly矢量ect中的第七个值。

假设向量yearlysumofrain而不是锯齿状的,您可以简单地检查从开始的距离。

// 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;

将降雨量的总和存储在一张年->双的地图中。

std::map<int, double>  rainfall;
while(file >> year >> month >> maxdeg >> mindeg >> afdays >> rainmm >> sunhours) 
  {
    rainfall[year] += rainmm;
    frost.push_back(afdays);
  }

然后,当文件读取完成时,通过例如在地图中查找最小值,在地图中查找降雨量最低/最高的条目

返回的迭代器有->first,它是年份,->second是当年的实际降雨量。

您应该将max_element(sumofrain.begin(),sumofrain.end())返回的迭代器存储到一个变量中。

auto itMax = max_element(sumofrain.begin(),sumofrain.end());

然后,找出找到的元素的基于零的索引:

itMax - sumofrain.begin();

并找到价值:

*itMax