矢量引用C ++

时间:2015-03-04 15:45:23

标签: c++ vector reference

我不确定我是否已经针对我实际要问的内容发布了正确的问题,但现在确实如此。我正在尝试从sumofrain向量打印最大和最小降雨量以及yearly向量中的相应年份。

为了明确sumofrain向量中的最大降雨量是向量中的第7个值,那么我想要输出的年份是yearly向量中的第7个值。

3 个答案:

答案 0 :(得分:1)

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

答案 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