我是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;
}
答案 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);
答案 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;
}