矢量引用 C++

vector referencing C++

不确定我是否针对我实际要问的问题发布了正确的问题,但它在这里。我正在尝试打印 sumofrain 向量中的最大和最小降雨量以及 yearly 向量中的相应年份。

只是为了弄清楚 sumofrain 向量中的最大降雨量是否是向量中的第 7 个值,那么我想要输出的年份是 yearly 向量中的第 7 个值等等.

将雨量总和存储在年份的地图中 -> 双倍。

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

然后,当文件读取完成后,通过例如 lowest/highest 降雨量在地图中找到条目。 Finding minimum value in a Map

你得到的迭代器有 ->first->second 那一年的实际降雨量。

鉴于向量 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;

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

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

然后,找出找到的元素的从零开始的索引:

itMax - sumofrain.begin();

并找到值:

*itMax