我刚开始学习C ++,所以我对此很新。
我有一个存储在主类中的向量. . .
{
test: /\.css$/,
loader: 'style!css-loader?modules&importLoaders=1&localIdentName=[name]__[local]___[hash:base64:5]'
}
. . .
。
我想实现一个函数vector<int> pricelist{30,10,16,25,13};
来返回一个lowestNHighestPrices()
对象,它给出了向量中最高和最低值的索引值(分别为0和1)。
Prices
该方法将由此代码行class Prices {
protected:
int lowestPrice;
int highestPrice;
public:
Prices(const int lowestPriceIn, const int highestPriceIn)
: lowestPrice(lowestPriceIn), highestPrice(highestPriceIn) {
}
int getlowestPrice() const {
return lowestPrice;
}
int gethighestPrice() const {
return highestPrice;
}
};
我不完全确定语法,是否有一些我可以使用getter方法的关键字,以便我可以从向量中获取最高和最低值?这样Prices prices = lowestNHighestPrices(prices);
和getLowestPrice() == 0
?
答案 0 :(得分:2)
根据评论中的建议,您可以使用std::min_element
和std::max_element
。以下代码(更新了空列表的Prices
类)进行了一次列表迭代。
class Prices {
protected:
int lowestPrice;
int highestPrice;
bool isValid;
public:
Prices() : lowestPrice(), highestPrice(), isValid(false) {}
Prices(const int lowestPriceIn, const int highestPriceIn)
: lowestPrice(lowestPriceIn), highestPrice(highestPriceIn) {}
void updateWith(int val)
{ if (!isValid) {
lowestPrice = highestPrice = val;
isValid = true;
}
else if (val < lowestPrice)
lowestPrice = val;
else if (val > highestPrice)
highestPrice = val;
}
};
Prices lowestNHighestPrices(const vector<int>& pricelist) {
Prices result;
for (auto val : pricelist)
result.updateWith(val);
return result;
}
答案 1 :(得分:2)
如果你有C ++ 11可用(你应该),只需使用std::minmax_element:
Prices lowestNHighestPrices(const vector<int>& pricelist)
{
assert( !pricelist.empty() ); // just in case
auto res = std::minmax_element(
pricelist.cbegin(),
pricelist.cend()
);
return Prices( *res.first, *res.second );
}
答案 2 :(得分:1)
返回textView
。
std::pair<int, int>
答案 3 :(得分:0)
您的班级已经有一个公共接口/方法来处理您的高价和低价。从它返回另一个结构或使用pass by reference参数虽然是一种可能的解决方案,但在这种情况下看起来毫无意义。并且,如果需要更通用的代码,例如容器,则由于其抽象命名来访问成员变量,因此应优先使用另一个类/结构的std :: pair。