0からの、超初心者C++相談室at TECH0からの、超初心者C++相談室 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト500:はちみつ餃子 ◆8X2XSCHEME 23/07/05 00:40:03.93 h//lr2GB.net >>498 標準出力の実態はパイプ。 パイプの接続先がターミナルのプロセスが繋がってるだけでカーネルはそれほど大したことはやってない。 と言えれば簡単なんだけど端末制御まわりは歴史的事情でよくわからんことになってるので ソースコードだけから読み取ろうとするのはしんどいと思う。 501:デフォルトの名無しさん 23/07/13 01:46:39.34 a7xsv8mg.net shared_ptrの解放時にweak_ptrを登録していたSTLコンテナから登録抹消したいけど、 shared_ptrのデリータでshared_ptr自身は扱えないっぽい。 出来ないということは、何か他にいい方法があるか、根本的に何か考え方間違ってる? 502:はちみつ餃子 ◆8X2XSCHEME 23/07/13 18:07:22.25 46c6OBqO.net >>501 設計意図次第だけど コンテナにはオブジェクト本体をいれて shared_ptr は コンテナ内の要素を指すイテレータを指す という構造はどうだろう。 #include <iostream> #include <memory> #include <set> int main(void) { std::set<int> container; auto [iter, result] = container.emplace(42); { // コンテナ内の要素を指す shared_ptr をいくつも作る auto x = std::shared_ptr<decltype(iter)>(new decltype(container)::iterator(iter), [&container](decltype(container)::iterator* p) { container.erase(*p); delete p;}); auto y = x; auto z = x; // コンテナの中には要素が入ってる for (auto& x : container) std::cout << x << " "; std::cout << std::endl; // shared_ptr はここで消滅 } // デリータが消したのでもう残ってない for (auto& x : container) std::cout << x << std::endl; } 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch