Можно ли передать конструктор, который принимает аргумент в набор в C ++? - PullRequest
2 голосов
/ 05 марта 2012

Мне было интересно, можно ли вообще передать конструктор, который принимает аргумент функции сравнения, в набор.

Например, что-то вроде этого:

class cmp
{
    private:
        string args_;
    public:
        cmp(const string& s):args_(s){}
        bool operator()(const int & a, const int& b)
            return a<b;
}

int main(int argc, char * argv[])
{
    string s(argv[1]);
    multiset<int, cmp(s)> ms; //can i do this?
}

1 Ответ

4 голосов
/ 05 марта 2012

std::set и std::multiset имеют конструкторы, которые принимают объект компаратора:

explicit set (const Compare& comp = Compare(),
              const Allocator& = Allocator());

Тип объекта Compare является вторым аргументом шаблона std::set или std::multiset.

...