2017-03-23 9 views
-4

私は特定の構成でセットの順序を変更しようとしています:::メンバー属性として設定

customObjectは、次の形式を持っている

class CustomObject{ 
public: 

... 
std::set<CustomObject*> container; 

}; 

とIコンテナは、次の順序でソートされていることを伝える恒久的性質を維持したいと思います:

elt1 & elt2は、コンテナの要素、 と 0123ですelt1.container.size()<elt2.container.size()

IFF私はIs the std::set iteration order always ascending according to the C++ specification?

を説明するよう

struct cmpStruct { 
    bool operator() (int const & lhs, int const & rhs) const 
    { 
    return lhs > rhs; 
    } 
}; 

を使用する必要があります知っている。しかし、私は「この」構造内部

おかげにアクセスするために行う方法がわかりませんあなたの助けのためにたくさん

+1

'this'がアクセスしたい何をすべきか?私は 'int'sの代わりに2つの' CustomObject'を比較したいと思います。 'cmpStruct'の署名を変更すると、あなたは自分自身で答えを知ることができると思います。 – user463035818

+0

クラス' CustomObject'に関連する2つの 'int'をどう比較していますか? –

答えて

0

それは何か?

class CustomObject{ 
public: 
    CustomObject(int _x) : x(_x) {}; 
    int x; 
}; 

struct cmpStruct { 
    bool operator() (const CustomObject* lhs, const CustomObject* rhs) const 
    { 
     return lhs->x > rhs->x; 
    } 
}; 

int main(int argc, char* argv[]) 
{ 
    std::set<CustomObject*, cmpStruct> container; 

    CustomObject a(10); 
    CustomObject b(20); 
    CustomObject c(5); 

    container.insert(&a); 
    container.insert(&b); 
    container.insert(&c); 

    for(auto co : container) { 
     std::cout << co->x << std::endl; 
    } 
    return 0; 
} 

出力:

20 
10 
5 
+0

私は質問を理解することは難しいと知っていますが、OPには 'CustomObject'のコンテナがあり、そのコンテナのサイズ(つまり' lhs-> container.size()> rhs - > container.size() ') – user463035818

+0

私は行CustomObject(int _x)がわからない:x(_x){}; はい、tobi303が正しく表現しています。container.size()でソートしたいです。 この小さな変更を加えればあなたの答えは正しいです。あなたのおかげで ありがとう –

関連する問題