名前空間
変種
操作

std::shared_ptr<T>::unique

From cppreference.com
< cpp‎ | memory‎ | shared ptr
 
 
メモリ管理ライブラリ
(説明用*)
未初期化メモリのアルゴリズム
(C++17)
(C++17)
(C++17)
制約付き未初期化
メモリアルゴリズム
Cライブラリ

アロケータ
メモリリソース
ガベージコレクションのサポート
(C++11)(C++23まで)
(C++11)(C++23まで)
(C++11)(C++23まで)
(C++11)(C++23まで)
(C++11)(C++23まで)
(C++11)(C++23まで)
未初期化ストレージ
(C++20まで*)
(C++20まで*)
明示的な生存期間管理
 
 
bool unique() const noexcept;
(C++17で非推奨)
(C++20で削除)

現在のオブジェクトを管理している shared_ptr インスタンスが、このオブジェクトだけであるかどうかを確認します。つまり、use_count() == 1 であるかどうかをチェックします。

目次

[編集] パラメータ

(なし)

[編集] 戻り値

true : 現在のオブジェクトを管理している shared_ptr インスタンスが、このオブジェクトだけである場合。false : それ以外の場合。

[編集] 注釈

この関数は C++17 で非推奨となり、C++20 で削除されました。なぜなら、マルチスレッド環境では use_count() == 1 は意味をなさないためです(use_count注釈を参照)。

[編集]

#include <iostream> 
#include <memory> 
 
int main() 
{ 
    auto sp1 = std::make_shared<int>(5);
    std::cout << std::boolalpha;
    std::cout << "sp1.unique() == " << sp1.unique() << '\n'; 
 
    std::shared_ptr<int> sp2 = sp1; 
    std::cout << "sp1.unique() == " << sp1.unique() << '\n'; 
}

出力

sp1.unique() == true
sp1.unique() == false

[編集] 関連項目

同じ管理オブジェクトを参照している shared_ptr オブジェクトの数を返す
(public member function) [編集]
English 日本語 中文(简体) 中文(繁體)