更新 : 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