次の方法で共有


operator< <memory>

更新 : 2007 年 11 月

shared_ptr および weak_ptr について大小関係 (より小さい) を比較します。

template<class Ty1, class Ty2>
    bool operator<(const shared_ptr<Ty1>& left, const shared_ptr<Ty2>& right);
template<class Ty1, class Ty2>
    bool operator<(const weak_ptr<Ty1>& left, const weak_ptr<Ty2>& right);

パラメータ

  • Ty1
    左辺の共有ポインタによって制御される型。

  • Ty2
    右辺の共有ポインタによって制御される型。

  • left
    左辺の共有ポインタ。

  • right
    右辺の共有ポインタ。

解説

このテンプレート関数では、それぞれの型のオブジェクトに厳密弱順序 (strict weak ordering) が適用されます。実際の大小関係は、left と right が同じリソースを所有している (または指し示している) 場合にのみ !(left < right) && !(right < left) が true になるという点を除き、実装に固有です。これらの関数によって適用される大小関係により、shared_ptr クラス オブジェクトおよび weak_ptr クラス オブジェクトを連想コンテナのキーとして利用することが可能となります。

使用例

 

// std_tr1__memory__operator_lt.cpp 
// compile with: /EHsc 
#include <memory> 
#include <iostream> 
 
int main() 
    { 
    std::tr1::shared_ptr<int> sp0(new int(0)); 
    std::tr1::shared_ptr<int> sp1(new int(0)); 
 
    std::cout << "sp0 < sp0 == " << std::boolalpha 
        << (sp0 < sp0) << std::endl; 
    std::cout << "sp0 < sp1 == " << std::boolalpha 
        << (sp0 < sp1) << std::endl; 
    std::cout << "sp1 < sp0 == " << std::boolalpha 
        << (sp1 < sp0) << std::endl; 
    std::cout << std::endl; 
 
    std::tr1::weak_ptr<int> wp0(sp0); 
    std::tr1::weak_ptr<int> wp1(sp1); 
 
    std::cout << "wp0 < wp0 == " << std::boolalpha 
        << (wp0 < wp0) << std::endl; 
    std::cout << "wp0 < wp1 == " << std::boolalpha 
        << (wp0 < wp1) << std::endl; 
    std::cout << "wp1 < wp0 == " << std::boolalpha 
        << (wp1 < wp0) << std::endl; 
 
    return (0); 
    } 
 
sp0 < sp0 == false
sp0 < sp1 == true
sp1 < sp0 == false

wp0 < wp0 == false
wp0 < wp1 == true
wp1 < wp0 == false

必要条件

ヘッダー : <memory>

名前空間 : std::tr1

参照

参照

<memory> (TR1)

shared_ptr クラス

weak_ptr クラス

operator== <memory>

operator!= <memory>