C++相談室 part139
■ このスレッドは過去ログ倉庫に格納されています
次スレを立てる時は本文の1行目に以下を追加して下さい。 !extend:on:vvvvv:1000:512 C++に関する質問やら話題やらはこちらへどうぞ。 ただし質問の前にはFAQに一通り目を通してください。 IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。 前スレ C++相談室 part137 (正しくはpart138) http://mevius.5ch.net/test/read.cgi/tech/1535353320/ このスレもよろしくね。 【初心者歓迎】C/C++室 Ver.103【環境依存OK】 https://mevius.5ch.net/test/read.cgi/tech/1530384293/ ■長いソースを貼るときはここへ。■ http://codepad.org/ https://ideone.com/ [C++ FAQ] https://isocpp.org/wiki/faq/ http://www.bohyoh.com/CandCPP/FAQ/ (日本語) ----- テンプレ ここまで ----- VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured 生ポを上手に使えない人が使えばいい 自信があれば無くてもOK 可能なら生ポインタは避けるのが良い作法。 単純に、 delete を書くのめんどいから勝手にやってくれた方がよくね? そりゃあ場合によっては生ポインタが必要な箇所もあるだろうけど、 スマートポインタは高度なライブラリ内だけでしか使われないってほど特殊なもんではない。 ポインタ型のデータメンバを持つクラスのコンストラクタで 発生した例外を function try block で捕捉して後始末をするよりは スマートポインタを使った方が勝手に解放してくれて楽というのもある。 例外が絡むと本当にめんどいし、思考停止したい。 >>482 参照カウントがGCの実装アルゴリズムとして使われることがあるというだけで、スマポがGCと言ってるわけではないよ。 だいたいガイジンにとってガベージコレクションといえば↓コレなんだから、広範に収集しないスマポをGCと呼ぶのはすごい違和感。 https://money.usnews.com/careers/best-jobs/garbage-collector スマポが GC かっていうのはちょくちょく話題になるね。 私自身は std::shared_ptr はガベジコレクタの一種だと考える派って話は前スレにも書いた。 https://mevius.5ch.net/test/read.cgi/tech/1535353320/303 考え方によるので定義を定める必要はないとも思ってるけどね。 >>473-474 C++ でデストラクタで不要なメモリにマークだけしておいて 実際の解放処理は後回し (とか別スレッドでやる) だとかいう手法もあるけれど、 あなたがたの基準ではこれは GC と言える? 作れるよ。C++でガベージコレクタを実装した言語を。 変な質問ですみません。 C++をBetterCとして使いたいのですが、C言語が分かる前提で、おすすめの書籍などないでしょうか? コーディング規約ではないですが、その書籍に書いてあることまでは使っていいような形にしたいのですが。 なんでC++をC++として使わないのか、使いたくないのか、使う度胸もないのか まずそこをはっきりさせよう ベターCなんぞというあまっちょろい考えのヤツはC++道破門だ そんなあまっちょろい考えだからJAVA上がりのようなデストラクタもろくに使いこなせない小わっぱだらけになるのじゃ C++ を Better C として使ってもよいというのは設計者自身も言ってる。 だけど、あくまでも、 C をわかっている人が完全には C++ を理解できなくとも わかる範囲で C++ を実務をに使いながら C++ への理解を深めていける (より高度な C++ 使いになることを目指す) という前提付きだ。 C から C++ への段階的な以降がスムーズに出来るという話であって、 >>489 のように C++ の固定されたサブセットを Better C として使うのはちょっと違う。 強いて言えば Embedded C++ とかいった規格の提案もあったけどさぁ、 https://ja.wikipedia.org/wiki/Embedded_C%2B%2B 企画倒れに終わったので書籍とかはあんまりないと思う。 c++をc++として使ってる人っていったい何作ってんの? ゲーム? でもゲームってAAAクラスだと未だに例外なしで作ったりしてんでしょ ゲームは例外ダメだったりC++03だったりしたけど 今はだいぶ現代的なC++になってきてるよ >>484 shared_ptrがGCと似た仕組みで動いている場合があるからといって、 shared_ptrがGCの一種であるというのはちょっと飛躍してない? C89以上C99未満のBetterCという意味ならわからんでもないが、その場合 参考にするのはやっぱりC89の本だろうな。 >>497 メカニズムは GC だから GC であるという単純な主張だよ。 似ているんじゃなくてそのものだと言ってる。 前スレで QZ 氏が書いている言語との関係性、抽象化の仕方による区別にも説得力を認めてはいるけど、 一般的に GC 付きで実装される言語のほとんどでは意味論としては GC を要求しているわけではなく、 「オブジェクトの寿命を無期限にする」という要求があって、それをある程度実現するために GC が 使われているに過ぎないということを考えれば言語側の意味論とメカニズムは切り離す方が自然で、 メカニズムが GC ならそれは GC だというのが私の考える理屈。 >>493 そういう選民思想的な考え方はいかがなものかと思うけどね 実際C++をCのような低レベル部分も含めてちゃんと理解し テンプレートを使った総称的プログラミングまで使いこなし、最新のライブラリも使いこなすのに どれだけの学習コストがかかるか 世の中ははちみつみたいなヒマ人ばっかじゃないんだよ? 俺スゲーと言いたいがためにC++の普及を妨げるな >>489 案外C++入門書ってCと同じ文字列は文字型の配列とか、そう言うところから入っちゃうから、 文字列はstring型、配列の代わりにvector型とかが入門の時点で説明されてるのって案外少ない。 ストラウストラップのプログラミング入門 とかどうよ? そうじゃなくて、文字列や配列はCと同じの使いたいなら、適当な入門書から使えそうなの抜き出せば良い。 あ、>>500 にはオブジェクト指向プログラミングも追加しとく >>500 隅々まで使いこなせと言ってるわけじゃない。 フルセットの C++ を自分なりに使えよと言ってるのであって、 その根拠として、一定の形に定まった C++ のサブセットという試みは ろくでもない結果に終わったという事実を紹介してるだけだ。 初心者や C++ しか知らない人が C++ を Better than C として使うことは不可能に近い C も C++ も知ってて C++ を敢えて C として使うことが出来る人だけが Better than C として使える Cで書くならちゃんとCとしてCの範疇で規格に沿って書けと思うけどな 準拠先はC89でもC99でもC11でもいいけどさ なんで異言語(C++)を中途半端に混ぜようとするの? D&E では、 C から C++ への段階的な移行が出来ることを 意図して C++ を設計した (Better C として使える) ということが書いてあって、 確かに私も C を知らなかったら C++ はまともに使えなかっただろうなと思う。 でも、 C の延長線上で C++ の便利な機能を使ったプログラムって どこまで C++ の機能を取り入れても「C++ 的なプログラム」ではないなとも思う。 C++ を (綺麗に) 使うなら C++ を前提とした設計が必要なので、 Better C として使うことを積極的には勧めにくいという気持ちもある。 欲しいのが「C++」ではなく「考え方は C っぽいけどもうちょっと高級なやつ」ならば Go あたりを考えてもいいんじゃないかな。 ∧_,, (#゚;;-゚)++ /;; ;;っ 〜;; ;; ノ (/"'J C言語を知らなかったら、C++が書けないのはありえない 入門書の初っ端にcin,coutを多用しておきながら、C言語から段階的に移行出来るとか寝言は寝て言えって感じやなw それでいてoperatorの説明は最後の方とか。大人しくprintfとscanfにしとけや。 まだBetterCがどうとかいってるのか 何十年前だよ 普通にC++を使えよ >>511 否定が多すぎて読み取りにくい。 「C言語を知らなかったら、C++が書けないのはありえない」→「C言語を知らなかったら、C++が書ける」→「C++ を書けなかったらC言語を知っている」 禿げは預言者に過ぎず、C++を授けたのは神なのでは。 >>503 お前D&E読んでるならEmbedded C++の話はまた別だと知ってるはずだが EC++はC++の方言を作ろうとしたのが失敗したんであって 「そんなもん使うくらいなら、職場やらプロジェクトでC++の一部の機能に限定して使え」と 禿も言ってたろうが 質問者の質問無視して何押し付けてんの?何様だよ 言語の使い道を決めるのはお前じゃない --no-exceptions --no-rtti これで充分だね C++はマングリガエシがどうのこうのって話を聞いたことがあるな。 >>516 ん〜、俺の言ってることが伝わってないな。 「自分なり」の、つまりは各プロジェクト、各チームの事情に合わせて (制限して) 使うべきで、 どっかからよくわからん「固定されたサブセット」を引っ張ってくるのはクソって話だから、 あなたの言うそのままのことを俺は言ってるつもり。 >>520 いやいやお前の言い分の方がわからんよ だったら>>489 の言う使い方で文句ないだろ 今後ともC++を覚える気は無い、なんてどこにも書いてなかったしな (さすがにそれだったら俺も「Cでええやろ」と思うけど) >>521 事情に配慮せずそこらへんの書籍を適用したって上手いこといかんという単純な話じゃないの。 >>496 へー、そんな仕事やってんだ どこの会社か興味あるけど まぁそれはさておきc++である必要性って何なの? C++ではいろんなもんが作られてる クリティカルなシロモノでスクリプトが使われることなんか滅多にない 要するに本を口実にして人間の能力を制限したいってことでしょう ンなモンC++の理念には全く反してるんじゃあないスかね そいつの能力の限界まで迫れなきゃあC++を使う意味なんてないよ 会社の教育目的なんだろうけど「本に書いてあること以上はするな」ってのは 公教育の理念に縛られたクズが言いそうなこと 他人の能力にストッパー掛けて制限したいための口実に過ぎない だからBetter Cとかは全く関係ない ただ単に目的は「そいつの能力を制限したい」 これだけ だから>>489 の思想は教育に名を借りた能力制限だよ 敗戦国の植民地でよくよく見られる思想だ ハッキリ言えば危険思想、撲滅した方がいい こういう中二病みたいなやつ増えたな こういうのに限って一度もまともなソフト書き上げてない リファクタリングすると重いソフトになる。 何故なのか。 >489みたいなのは、よくあることだろう? 大抵はコーディング規約で、なんらか制限したりとかしていると思うけど。 そもそもC++を使えるプログラマが、そんなにいるとは思えない。 EffectiveC++を知らない(”読んでない”でなく)プログラマも数多くいる。 チーム全員がと言うことになると、一番下の人に合わせることになるだろう。 1. 入門書 2. Effective 何々 3. 逆引き・レシピ本 4. メタプログラミング どの言語でも、この順番。 3まで読んで、そこからプロ! 1だけの開発者は、素人だろw C++ boost.asioについて質問です。 boost::asio::ip::tcp::acceptorのasync_acceptはスレッドセーフ? サーバーを実装するとき1ポートで1acceptorになるはずだけど このacceptorは複数のスレッドからasync_acceptしても大丈夫? 一つのacceptorを複数のスレッドでacceptするのはパフォーマンスの観点からも良いですか? >>531 ポイントカードやクレジットカードのデータを読み込んで表示させるプログラム自作する営業がいる一方で、 プログラマーとして入って何も出来ない奴もいる。 (こう言うのは早々に消えるが) 実力じゃなくて、何が主な収入かでプログラマーと言われてる所はある。 まあ、あれはプログラマーが外人で、都合の悪い事は認めないから証拠集めに仕方なく覚えたスキルってのもあったかもだけど。 >>533 スレッドセーフかどうかなんて簡単に調べられるんじゃない? セーフかどうか調べる方法がわからんの? 先ずはその調べる方法を確立したほうが いいんではない? >>529 それアホなリファクタリングしてるだけだろ w OOPをやりたいんですけど、C++やったことありません Smalltalkを勉強したほうがいいですか? そういうアプローチもあるだろうね 求めるものがサイエンスなのかテクノロジーなのかで 選んだらいい >>535 >>537 ありがとうございます。 勉強します。 メンバ関数の末尾に&や&&がつくのって何か意味があるのですか? constやnoexcept、volatileはわかるのですが・・・ 代入演算子に左辺値参照修飾しとくと、右辺値に代入できなくなったりする 他はなんかあるかな・・・ C++11で追加だったのね。ありがとうこざいます。 https://kagasu.hatenablog.com/entry/2017/05/02/120156 このページで、例えば ifs.imbue(locale(locale::empty(), new codecvt_utf16<wchar_t, 0x10ffff, consume_header>)); というのがあって、locale()の第二引数でnewされたものがありますが、 これをdeleteする記述が見当たりません。 他のページでも同様です。 リークしてそうで怖いのですが、一体どこでdeleteされてるんでしょうか?? >>546 参照カウント方式で管理されてて、デストラクタでdeleteされます >>547 素晴らしい! RAIIですね。 安心しました。 ありがとうございました! 普通にどうプログラムを書いていいのかわらないので 質問したいのですがよろしいですか? すれ違いならすいません 図1 000 000 000 図1の0の部分を0から9までのすべての数字に置き換えたものを 表示して変数に格納する 図では3X3にしましたがnXnだとしてください。 説明が下手かもしれませんがよろしくお願いします 0から9までのすべての数字は10個あるが 場所は9個しかないがどうするの 説明が下手ですいません 236 000 011 こんな感じで9か所すべてに0から9まで入ったものを全パターン格納したいです .csvにして出力したいので excelで手打ちするよりはいいのかなと たぶん、20GBほど必要だけどいいんか? 全パターンにこだわらず、乱数で必要な数だけ生成したほうが良いのでは? おっとinodeの最小サイズがあるから100倍くらいかしら それは3*3を1次元で考えると 0 0 0 0 0 0 0 0 0 から1ずつ増やして 9 9 9 9 9 9 9 9 9 まで表示して全パターンを変数に格納ってこと? 単純に1桁1バイトで考えると1パターンにつき9桁9バイト必要なので、格納領域だけで9000000000バイト=約8.4ギビバイト必要なんだけどそういうこと? 1000パターン/秒の速度で表示したとしても104日かかる計算になる。 課題か何か知らないけど、問題を勘違いしてるのでは? 3*3だったら要素数9の配列を用意してループで回せばいいだけじゃないの? 9!≒36万行のcsvが欲しいのか? 4x4だと16通りで16!=20?922?789?888?000 おおよそ21京行のcsvファイルが出来上がる 5x5だとwikipediaにもoeisにも載ってないが 15,5112,1004,3330,9859,8400,0000 らしいので 15.5穣行のcsvファイルが出来上がる Yが一歩手前の??なんで、世界中の記憶媒体を寄せ集めても足りるかどうか・・・ 6x6だと36!の 37,1993,3267,8990,1217,4679,9944,8150,8352,0000,0000 37正 csvファイルを作り終える前に人類滅亡するレヴェル 実際に必要なのは160万通りぐらいだけど無理? 無理なら諦めます 全ての場合分けを検討できないから、枝刈りしようよ。 全パターン網羅じゃなくてピックアップでいいなら乱数という手段もありでは 乗り遅れた… 鏡像とか回転の扱いをどうするかとか 楽しそうな課題だな N×N のテーブルを N 種類の値同士の演算結果と考えて その演算結果が群の性質を満たすパターンだけを取り出す というような課題はやったことがあるな。 群論的には値の個性は意味がなくて、 たとえば全ての 1 と全ての 2 を交換したようなパターンは 等しいという扱いになってしまうので、 それを除去するのが面倒だった。 いや、この話題の流れには関係ない話なんだけど >>571 を見て思い出したもんだから。 vector A に vector B を部分代入することってできないの? つまり、代入後は vector B が vector A の部分vectorになっててほしい 部分vectorって言ってるから、Bを参照扱いで挿入出来ないかってことじゃないの? Bを書き換えたらAにも反映されるみたいな。 まぁ、vectorじゃ構造上無理なんだけど。 >>572 >N×N のテーブルを N 種類の値同士の演算結果と考えてその演算結果が群の性質を満たすパターンだけを取り出す すごく興味がありますね… 準同型を検出するのが難しそうですが、ガウス吐き出し法で同一解(ただす解を小さいもの順に並べなおす)を弾くようにするだけでなんとかなりますか? ググッてみると、位数12 の群のひとつは、巡回群でも巡回群の直積でもない、これより低位には現れなかった新たなパターン、らしいのです、これはどんな群なのか具体的に知りたいものです ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.1 2024/04/28 Walang Kapalit ★ | Donguri System Team 5ちゃんねる