gpt4 book ai didi

algorithm - 按此向量中映射的成员对对象向量进行排序

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:04:29 30 4
gpt4 key购买 nike

我想我有一个非常简单的问题,但是......我必须按向量自己的成员对向量进行排序,但我做不到。

这是我用另一个向量中的对象填充向量的函数。我必须按特定产品对向量 SortDealers 进行排序,但我不知道如何将股票名称发送给我的重载运算符<

void CShop::sortVector(const CStock& s1)
{
vector<CDealer> SortDealers;
vector<CDealer* >::iterator it = Dealers.begin();
while (it != Dealers.end())
{
if ((*(*it)).ComapareNameProducts(s1))
{
SortDealers.push_back(*(*it));
}
it++;

}
sort(SortDealers.begin(), SortDealers.end());
copy(SortDealers.begin(), SortDealers.end(), ostream_iterator<CDealer>(cout, "\n"));
}

这是重载运算符<:我必须按 map 的未签名成员排序。

bool CDealer::operator<(const CDealer & o1)
{
unsigned res1 = 0;
unsigned res2= 0;
map<const CStock, pair<unsigned, double>>::const_iterator it = Stock.begin();
map<const CStock, pair<unsigned, double>>::const_iterator iter = o1.Stock.begin();
while (it != Stock.end())
{
res1 += it->second.first;
it++;
}
while (iter != o1.Stock.end())
{
res2 += iter->second.first;
iter++;
}
return (res1 < res2);
}

最佳答案

你可以使用仿函数:

class less_than
{
const string stockname;
public:
less_than(string s) : stockname(s) {}
inline bool operator() const (const CDealer& a, const CDealer& b)
{
// use stockname here
}
};

sort(SortDealers.begin(), SortDealers.end(), less_than("name"));

您还可以使用 lambda 表达式在其捕获中提供股票名称。

关于algorithm - 按此向量中映射的成员对对象向量进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50689796/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com