Updated:

less than 1 minute read

개요

  • 값 기반이 아닌 소유자 기반 비교


예제

  • 코드
     #include <iostream>
     #include <memory>
     #include <set>
        
     using namespace std;
        
     int main() {
     	shared_ptr<int> p1(new int(10));
     	shared_ptr<int> p2(p1, new int(20));
        
     	set<shared_ptr<int>> valueBased;
     	valueBased.insert(p1);
     	valueBased.insert(p2);
     	cout << valueBased.size() << endl;
     	for (const auto &iter : valueBased) {
     		cout << *iter << endl;
     	}
        
     	cout << "------" << endl;
        
     	set<shared_ptr<int>, owner_less<shared_ptr<int>>> ownerBased;
     	ownerBased.insert(p1);
     	ownerBased.insert(p2);
     	cout << ownerBased.size() << endl;
     	for (const auto &iter : ownerBased) {
     		cout << *iter << endl;
     	}
        
     	return 0;
     }
    
  • 실행 결과
     2
     10
     20
     ------
     1
     10