【问题标题】:set comparator type expected error设置比较器类型预期错误
【发布时间】:2010-11-01 02:21:19
【问题描述】:

对不起,如果这是一个愚蠢的问题。我有一组整数,我想使用函数对象对其进行排序。但是当我尝试编译以下代码时,我收到错误“'_Pr' 的模板参数无效,键入预期”。


    class MySortedUser{
    vector < user* > & users;
    public:
 MySortedUser(vector < user* > & _users):users(_users)
 {
 }
 bool operator()(const int& A, const int& B) const
 {
  return (users[A]->username < users[B]->username);
 } 
   };
    void someFunction(vector < user* > & _users)
    {
      set< int, MySortedUser(_users) > MySet;  //error here
    }

你能告诉我我做错了什么吗?

【问题讨论】:

    标签: c++ templates stl set


    【解决方案1】:

    MySortedUser(_users) 是一个表达式(它创建一个MySortedUser 对象)。该对象是在运行时构建的。模板需要在编译时实例化

    您需要将类型作为模板参数提供std::set,并将构造的比较器作为构造函数参数提供:

    std::set<int, MySortedUser> MySet(MySortedUser(_users));
    

    【讨论】:

      猜你喜欢
      • 2013-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-06
      • 1970-01-01
      • 2011-05-28
      • 1970-01-01
      • 2014-09-10
      相关资源
      最近更新 更多