我有一个填充了按名称排序的客户端类对象的向量。当我尝试搜索“最高”名称(字符串类)时,问题就开始了。
我的问题的一个简短示例:
int main()
{
vector<Client> vCli;
vector<Client>::iterator low;
vector<Client>::iterator up;
myClass c1(1, "John Lil", 123);
myClass c2(2, "John Bob", 325);
myClass c3(3, "Alves Hunk", 472);
myClass c4(4, "Gil Diniz", 521);
myClass c5(5, "Boll Yo", 181);
c_Cli.push_back(c1);
c_Cli.push_back(c2);
c_Cli.push_back(c3);
c_Cli.push_back(c4);
c_Cli.push_back(c5);
sort(vCli.begin(), vCli.end(), auxPesqNome[](Cliente a, Cliente b) {return a.name < b.name;} );
/* Correct sort = Alves Hunk, Boll Yo, Gil Diniz,John Bob ,John Lil */
low = lower_bound (vCli.begin(), vCli.end(), "John", [](Cliente a, Cliente b) {return a.name < b.name;});
up = upper_bound (vCli.begin(), vCli.end(), "John", [](Cliente a, Cliente b) {return a.name < b.name;});
cout << (low - vCli.begin()) << endl;
/* Correct output = 3 */
cout << (up - vCli.begin()) << endl;
/* ***INCORRECT output = 3 *** */
return 0
}
我认为问题可能出在复合名称上,但我在 c++ 方面的一点经验无法解决。
我想用“equal_range”替换“lower_bound”和“upper_bound”。