用于在向量中查找最小值和最大值以及返回其索引的函数

时间:2016-10-04 07:38:02

标签: c++

我是C ++的新手我本周才开始学习它。

正如问题中所述,我试图在向量vector<int> pricelist{10,23,45,12,32}中找到最高和最低值,所以我希望得到0和2的返回值。

public:
Prices(const int lowestPriceIn, const int highestPriceIn)
       : lowestPrice(lowestPriceIn), highestPrice(highestPriceIn) {
   }

我想在方法lowestNHighestPrices()中添加一个函数。

我假设我可以创建一个迭代遍历向量的循环,但是我如何确定哪个是最低和最高值?我怎样才能得到索引而不是元素?

我有2个get方法返回2个int变量,一个用于最低值,另一个用于最高值。

int getlowestPrice() const {
       return lowestPrice;
   }

   int gethighestPrice() const {
       return highestPrice;
   }

2 个答案:

答案 0 :(得分:4)

您可以使用std::minmax_element以一种方式同时获取最小值和最大值及其各自的索引:

std::vector<int> v {10,23,45,12,32};
auto mm = std::minmax_element(v.begin(), v.end());
auto idx_min = std::distance(v.begin(), mm.first);
auto idx_max = std::distance(v.begin(), mm.second);

Live Demo

答案 1 :(得分:1)

int getlowestPrice() const {
   vector<int>::iterator it = std::min_element(pricelist);
   lowestPrice = it - pricelist.begin();
   return lowestPrice; 
}

int gethighestPrice() const {
   vector<int>::iterator it = std::max_element(pricelist);
   highestPrice = it - pricelist.begin();
   return highestPrice; 
}