0

我有一个填充了按名称排序的客户端类对象的向量。当我尝试搜索“最高”名称(字符串类)时,问题就开始了。

我的问题的一个简短示例:

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”。

4

0 回答 0