[過去ログ] C++相談室 part153 (985レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
1
(4): 2020/10/10(土)23:18 ID:i4F+i14Y(1) AAS
2chスレ:tech
※前スレ
C++相談室 part152
2chスレ:tech

テンプレおしまい
859: 2020/12/23(水)22:21 ID:JqE6cd4a(1) AAS
最適化にも限界はあるから、どういうコードの書き方ならコンパイラが最適化しやすいか、
ってのを知るのは必要なんやろうね
データアクセスの局所化とか偽の依存関係の除去とか
860
(1): 2020/12/23(水)23:11 ID:pgaSoeQc(1/3) AAS
typedefで二重定義になった場合さぁ…同じ型だとコンパイルエラーにはならないんだよ…
なんか気持ち悪いので…typedefだけのヘッダーを呼ぶようにしたけど…同じ型だとOKなん?
861: 2020/12/23(水)23:12 ID:pgaSoeQc(2/3) AAS
ヘッダーに渡しても同じことか…相互参照してるんだった…
862: 2020/12/23(水)23:13 ID:pgaSoeQc(3/3) AAS
一応…間違えないように…ヘッダーに集約しておく…
863
(1): 2020/12/23(水)23:13 ID:KqYWGLnc(1) AAS
Ruby VM では、1秒間に、100万回ループすると、
Ruby中間言語を、JIT で機械語にコンパイルして、

1秒間に、1,000万回ループ出来るようになる
864: 2020/12/23(水)23:43 ID:iOQdV6uo(2/2) AAS
いや指定した数だけループしろよ
何勝手に回数10倍に増やしとんじゃい
865: 2020/12/24(木)06:19 ID:TzdYJrci(1/3) AAS
サムソンを守るためのHuawei潰しという側面もある。
866: 2020/12/24(木)06:55 ID:fOK7nTKz(1) AAS
んあ?
867: 2020/12/24(木)06:58 ID:TzdYJrci(2/3) AAS
文大統領がトランプ大統領に、Huaweiを潰すよう勧めたそうです。
868: 2020/12/24(木)07:53 ID:X8ie3AzF(1/4) AAS
>>863
C++ならはじめから秒2000万回ループできるコードになる
869: 2020/12/24(木)08:12 ID:TzdYJrci(3/3) AAS
このプログラムは応答していないためシステムによって閉じられますって出るんじゃないの。
870: はちみつ餃子 ◆8X2XSCHEME 2020/12/24(木)10:18 ID:ys2W6z1g(1) AAS
>>860
OK
外部リンク:timsong-cpp.github.io
871
(1): 2020/12/24(木)11:16 ID:h4Gph9I0(1/2) AAS
>>854
手元の32bitマイコン(除算器なし)だと
uint16_t v; に値入ってたとして、
if(v >= 100 && v < 1000) よりは ((v >= 100) & (v < 100p
872
(1): 2020/12/24(木)11:27 ID:h4Gph9I0(2/2) AAS
>>871
途中で送ってもうたorz

((v >= 100) && (v < 1000))のが気休め速い感じだったな。
あとLUTもほぼ変わらん。LUTはもう少し複雑な計算で、
かつキャッシュにテーブルが入ってくると鬼速だろうけど。

単純な比較のみだからあまり速い方法ないのかもね〜
ダメ元で掛け算とビットシフトで/100する処理も試したけど
ちょっと遅くなったorz

つか、32bitマイコンだと100us周期程度の割り込みハンドラで
この水準まで自分は気にしないだす。
あとC++ならinline化とかその辺をまずチェックでしょうさ。
873
(1): 2020/12/24(木)17:12 ID:tg7gMCA8(1) AAS
>>872
if ((unsigned)v - 100u < 900u)
のが早くない?

テーブルは論外だ
アドレス計算コストの方が高そうだし
ROMサイズやキャッシュ汚染などの悪影響がある
874: 2020/12/24(木)19:53 ID:9+0irhfK(1) AAS
if ((unsigned)v - 100u < 900u)
こういうのは減算とコンペア(実質減算)の2回の演算が常に走るから必ずしも速くないんじゃないかな。
&&で繋ぐ方がショートサーキットが働いて1回で済む場合がある。
演算で0との比較に落とせるなら別だけど。
875: 2020/12/24(木)19:56 ID:VQIKvM0h(1) AAS
そのくらいなら最適化に任せた方がいい気がするが……
876: 2020/12/24(木)21:38 ID:B83YCBUh(1) AAS
比較がボトルネックってのは本当だろうかとは思わなくもない
まあ、データ転送とか切り詰めまくって残すは比較のみ、ってのもありうるけど
877: 2020/12/24(木)21:38 ID:X8ie3AzF(2/4) AAS
整数の減算は非常に高速
条件分岐は遅いし分岐予測を汚染する

コンパイラの最適化を見てると良い
範囲判定は大抵>>873のようなコードになる
878: 2020/12/24(木)21:41 ID:X8ie3AzF(3/4) AAS
コード的には普通に
if (100 <= x && x < 1000)
と書いておけば良い

コンパイラが最適化するから

x/100を比較するのは
意味的にも意味不明だし
速くなることもない
879: 2020/12/24(木)21:51 ID:X8ie3AzF(4/4) AAS
ISRの最適化なら

レジスタを節約して待避する数を減らすとか
レジスタバンクを使ってレジスタを切り替えるとか
RAM上で実行するとか
割り込みを許可せずに高速化とか(MIPSの場合)
まあ色々とチューニング出来る余地がある

小規模DSPなんかだと
いまだにISRをアセンブラで書いたりする
880: 2020/12/25(金)14:04 ID:L6KY61Ck(1) AAS
バンク切り替えテクニックですか。
むかしのインターフェース誌っぽいですね。
881: 2020/12/25(金)17:40 ID:j6GWo/XP(1) AAS
昔のテクニックが今でも有効
882: 2020/12/25(金)20:23 ID:KGl9PDWX(1) AAS
template<size_t A, size_t B>
class tmp{};

template<size_t N>
void test(tmp<N, N>&){
std::cout << “A”;
}

template<size_t A, size_t B>
void test(tmp<A, B>&){
std::cout << “B”;
}

上のような関数があったときにtest(tmp<1,1>{});がどちらを呼ぶか規格で決まってる?
883: 2020/12/25(金)22:18 ID:9Tm+xBHp(1) AAS
テンプレート引数が少ないtmp<N, N>の勝ち
884
(1): 2020/12/26(土)00:14 ID:biNpl0R5(1/2) AAS
using FunctorType = std::function<void()>;
struct RecursiveMapperType;
using InternalMapperType = std::map<std::string, RecursiveMapperType>;
struct RecursiveMapperType : public InternalMapperType
{
RecursiveMapperType(){}
};

こういうコードをネットで見かけたんだけど
RecursiveMapperTypeを前方宣言してInternalMapperTypeを宣言
RecursiveMapperTypeをInternalMapperTypeを継承して作成していることのメリットがよくわからない。

struct RecursiveMapperType : public InternalMapperType
{
RecursiveMapperType(){}
};
using RecursiveMap = std::map<std::string, RecursiveMapperType>

だとだめなのだろうか?
誰か教えて下しあ
885
(1): 2020/12/26(土)00:40 ID:3VlCU3bq(1/2) AAS
>>884
上のコードと下のコードの RecursiveMapperType の定義はまったく同じに見えるんだけど、何が違うの?
886
(1): 2020/12/26(土)00:50 ID:biNpl0R5(2/2) AAS
>>885 さん
すみません。
下の方のRecursiveMapperTypeですが継承元消し忘れてました。
下のようなkたちです
struct RecursiveMapperType
{
RecursiveMapperType(){}
};
using RecursiveMap = std::map<std::string, RecursiveMapperType>
887: 2020/12/26(土)03:46 ID:fBIAR6pR(1) AAS
外部リンク:ideone.com
888: 2020/12/26(土)15:10 ID:3VlCU3bq(2/2) AAS
>>886
それじゃ全然機能が違うっていうかその RecursiveMap 何の役にも立たないでしょ。
元の RecursiveMapperType の機能が理解できてないだけか。
889: 2020/12/26(土)16:40 ID:vGzfsLf/(1) AAS
再帰的な構造を定義したくて自分自身の型を含めたものを継承してるわけで
それを実現するには前方宣言するしかない
というね
890: 2020/12/26(土)17:13 ID:UNoc468U(1) AAS
再帰的なコンテナは、フィールドが出来た時点で破綻するのでは?
891: 2020/12/26(土)18:07 ID:TLGOuMOF(1) AAS
外部リンク[html]:cpprefjp.github.io
>不完全型を要素にする例 (C++17)

これの亜種
892: 2020/12/27(日)06:31 ID:QkMmRpj8(1/3) AAS
C++23に持ち越された契約は何が変わるんだろね。
893
(2): 2020/12/27(日)17:59 ID:wQ5c+q6H(1) AAS
ありがとうございます。なんとなくイメージできました。

コードの設計ってまだよくわからないのですが、
再帰処理のためにこうするのって比較的普通なことなんですか?
894: 2020/12/27(日)18:23 ID:tp3tetyk(1) AAS
>>893
知らんよ。
普通かどうかなんて気にしてどうするの?ここで名無しの誰かに yes/no 答えてもらって何か意味ある?
895: 2020/12/27(日)18:33 ID:7Rx7y5wp(1/2) AAS
>>893
STLのクラスを継承して階層構造を実現するテクは応用編って感じがする
もっと基本的なやり方をするならデザパタのcompositeパターンを使う
とかかね
896: 2020/12/27(日)18:47 ID:7Rx7y5wp(2/2) AAS
設計を学ぶならデザパタはひと通り見ておいて損はないぞ
897: 2020/12/27(日)18:49 ID:QkMmRpj8(2/3) AAS
ヘネパタ、パタヘネ、デザパタ。
898: 2020/12/27(日)22:11 ID:QkMmRpj8(3/3) AAS
newのコストは気にされますが、deleteのコストは見逃されがちです。
899: 2020/12/28(月)02:23 ID:ibU6N4ur(1) AAS
あるクラスのコンストラクタのデフォルト引数を変更するときってどうしたらいいの?
オーバーロードすれば良い?
900
(1): 2020/12/28(月)07:27 ID:7Z4wU2qk(1/2) AAS
単純に変更じゃダメな理由は?
他のライブラリ?
901: 2020/12/28(月)07:33 ID:pesKZps1(1) AAS
stlコンテナを継承するのはアウトだろ。
うまくやらないとデストラクタが呼ばれなくなっちゃうぞ
902: 2020/12/28(月)09:00 ID:i4NtF28F(1/3) AAS
じゃあうまくやりましょうや。
903
(1): 2020/12/28(月)09:44 ID:bVWPeYFg(1/2) AAS
そもそもC++ではデストラクタを仮想にしてないってことは「継承すんなよ」って宣言だからなぁ
904: 2020/12/28(月)09:55 ID:W/k+iOkV(1) AAS
なんで継承しないようにしたか意見表明文みたいなモンはどっかにあるのか?
905: 2020/12/28(月)10:20 ID:ErVwTltE(1) AAS
仮想関数化するとしない場合に比べて余分なコストがかかるから、必要な理由がない限り基本的にそれは避けるということじゃないかな
906: 2020/12/28(月)10:32 ID:4OiRlqvR(1) AAS
C++は1クロックでも速く動作させるために非仮想関数をデフォルトにしたのは理解できる
Javaは動作速度よりもオブジェクト指向の継承動作の一貫性を重視してすべて仮想関数にした、これも時代を考えれば理解できる
C#もJavaと同じくデフォルトを仮想関数にしておいて欲しかったのだが、C#はC++を尊重してデフォルト非仮想関数なんだよね
これはちょっと残念
907: 2020/12/28(月)11:33 ID:s2RdB6EU(1) AAS
継承して機能追加っていうのがオブジェクト指向的にもどうかと思うね
908: 2020/12/28(月)12:34 ID:QmdcnH/3(1) AAS
finalキーワードがこの時代にあれば間違いなく付けただろうな
文句言ってる奴はガイジ
909: 2020/12/28(月)12:42 ID:UEnoPUHl(1/2) AAS
>>903
継承すんな、は言いすぎ。
private継承なら問題ないと思うけど。実際たまに使われているし。
910
(2): はちみつ餃子 ◆8X2XSCHEME 2020/12/28(月)13:19 ID:N6A7dpOQ(1/2) AAS
デストラクタが仮想ではないものを継承したときの具体的な問題は
スライシングが起こりうるということと、
起こってもコンパイラが (少なくともコンパイル時には) 捕捉できないことが多いということにあって、
スライシングが起こらないように使う分には問題はない。

設計的に綺麗かどうかはまた別の話だけど。

shared_ptr が (デストラクタが仮想でなくても) 元の型のデストラクタを呼んでくれたりするんで、
場合によってはそういう設計もアリということなんだと思う。
911
(2): 2020/12/28(月)14:12 ID:02+J4aSB(1/4) AAS
>>910
デストラクタが仮想なものを継承してもスライシングは起こりうるよね?そこは関係なくね?
外部リンク:en.wikipedia.org
> In C++ programming, object slicing occurs when an object of a subclass type
> is copied to an object of superclass type: the superclass copy will not have
> any of the member variables defined in the subclass. ...
912: 2020/12/28(月)17:31 ID:V+A6vVBD(1/2) AAS
C++自由すぎてしんどいな
後方互換性と引き換えに払った代償か
913
(1): はちみつ餃子 ◆8X2XSCHEME 2020/12/28(月)17:46 ID:N6A7dpOQ(2/2) AAS
>>911
スライシング自体は起こるけど、それで予想外のことやメモリ管理の矛盾は起こり難い。
914: 2020/12/28(月)17:50 ID:i4NtF28F(2/3) AAS
自由に羽ばたける翼。
915: 2020/12/28(月)18:06 ID:V+A6vVBD(2/2) AAS
自由すぎて困る部分はLinterを併用することで勝手に回避しろってことかな
916: 2020/12/28(月)18:37 ID:v+s+VlFU(1/2) AAS
だってCの設計思想が「人間を信用する」だもん
セキュリティが重視される現代的な言語のベースとしては致命的に合ってないんだよね
917: 2020/12/28(月)18:40 ID:02+J4aSB(2/4) AAS
>>913
やっぱり関係がわからない。
デストラクタが仮想ではないものを継承したときに限ってスライシングが予想外のことや
メモリ管理の矛盾につがなる例をひとつでいいから見えてもらえない?
918: 2020/12/28(月)18:40 ID:02+J4aSB(3/4) AAS
s/見えてもらえない?/見せてもらえない?/
919: 2020/12/28(月)19:07 ID:bVWPeYFg(2/2) AAS
A <|- B, C みたいなときにB, CをnewしてA*として管理しようとすると破棄の時にAのデストラクタしか呼ばれない
920: 2020/12/28(月)19:09 ID:UEnoPUHl(2/2) AAS
>>911
仮想でないデストラクタが話題のスコープなのに、スライシングにスコープを移したら議論にならないでしょ。

911) デストラクタが仮想なものを継承する→スライシングになるものが存在する
という命題は
910) デストラクタが仮想ではないものを継承する→スライシングになるものが存在する
という命題と矛盾するわけではない(両立する)ので、その議論はあんまり意味がない。
921: 2020/12/28(月)19:14 ID:i4NtF28F(3/3) AAS
スライシング・オプティマイザーとかどうよ?
922: 2020/12/28(月)19:36 ID:02+J4aSB(4/4) AAS
>>910
> スライシングが起こらないように使う分には問題はない。
ここもおかしいんだよね。

デストラクタが仮想ではないものを継承して派生クラスのオブジェクトを new で作って
基底クラスのポインタを通して delete したら未定義動作になるわけだけど、
これはスライシングを起こしていなくても問題になる。

「派生クラスのオブジェクトを new で作って基底クラスのポインタを通して delete」のことを
「スライシング」と呼んでる気配もあるんだけど、それは明らかに誤りだろうし。
923
(1): 2020/12/28(月)19:43 ID:592FfNkQ(1) AAS
>>900
変更ってどうやるの?
毎回好きな引数を与えよってこと?
面倒なので、自分の好きな引数を自分のコードの中ではデフォルトにできれば良いのにと思ったのだが、こういう考えは間違っていますか
924
(1): 2020/12/28(月)19:51 ID:7Z4wU2qk(2/2) AAS
>>923
make関数作るのはダメなん?
925
(1): 2020/12/28(月)19:59 ID:v+s+VlFU(2/2) AAS
デストラクタはpublic仮想かprotected非仮想かpublic非仮想finalのどれかにしろ
っていう一般的結論でよくね
926: 2020/12/28(月)21:21 ID:sYj4+JXZ(1) AAS
>>925
自分で書くときはそう
標準のコンテナのように既存のクラスがそうでなかったら?が発端だからなぁ

個人的には仮想デストラクタがなければ継承はしない
(一部のイディオムを除けば)private継承にするくらいなら委譲する。
927
(2): 2020/12/28(月)21:54 ID:wzipnhb8(1) AAS
デストラクタがprotected:であっても非仮想なら継承したらアウトなんじゃ…
派生クラスの破棄時に基底クラスのデストラクタが呼ばれない
的な意味で
928: 2020/12/28(月)21:57 ID:dWPs/bUX(1) AAS
>>924
オブジェクトを作るための関数を作ってはどうかという意味ですか?
確かにそれで良いのでそうします
929: 2020/12/29(火)07:11 ID:2gsaGKLd(1/4) AAS
相称型プログラミング。
930: 2020/12/29(火)07:28 ID:2gsaGKLd(2/4) AAS
いま私大事なこと言いましたよ。
931: 2020/12/29(火)07:37 ID:H8QGk97F(1) AAS
プログラミング学びには来ないだろ
こんな途上国に
932: 2020/12/29(火)07:38 ID:2gsaGKLd(3/4) AAS
【CSS規格、読書感想文】
CSSがアイデアであった段階からスクリプト言語で実装され、初の大規模採用であったネットスケープにおいてもJavascriptによって実装されていたため、規格そのものがC/C++で効率的になるよう設計されていない。※
現行の規格に対して効率的な実装を施したとしても、将来の規格バージョンで維持できると限らないため、結局、スクリプト言語と同様の非効率を許容することになる。
これはつまり、ほとんどのシンボルを動的に確保することを意味する。

※HTML5規格は、C/C++で効率的に実装できるように仕組まれている。
933: 2020/12/29(火)07:48 ID:UwKcs/oz(1) AAS
なるほどねー
そもそもCSSのCって要る?
もはやスタイルシートってサイト作成者が決めるものになっているよね
ユーザースタイルシートをカスケード適用できる機能もなくせばさらに効率よくできそう
934: 2020/12/29(火)07:49 ID:oaU8v0Mt(1) AAS
>>927
なんで?~Derived()が~Base()を呼ばない場合なんて存在しないぞvirtualの有無関係なく
935: 2020/12/29(火)08:05 ID:vWMLZNcx(1) AAS
>>927
型消去とsmart ptr実装で調べるよろし。
936
(1): 2020/12/29(火)09:18 ID:qLyTNuLW(1) AAS
定期的に話題になるけど、基底のデストラクタにvirtualが必要なのは
基底型のポインタでdeleteするときだけな
末端のデストラクタさえ呼べれば、次に呼ぶ基底の型は分かりきってるからね

別の言い方をすれば、常に末端の型のポインタをdeleteする分には、virtualなデストラクタなんか要らんということ
937: 2020/12/29(火)11:55 ID:So4DneUg(1) AAS
ポリモーフィズムの旨味が消えるw
938: 2020/12/29(火)12:13 ID:2gsaGKLd(4/4) AAS
ポリリズムから出汁をとったみたいないい方しますね。
939: 2020/12/29(火)13:15 ID:m86wB2y9(1) AAS
まあ普通は末端の型を意識しなくて済むからこそ派生の旨味がある訳で
940: 2020/12/29(火)14:33 ID:kdP0thHS(1) AAS
>>936
その点については誰もが一度は通る勘違いだよなw
最初はわけも分からず機械的にvirtualつけて回ってたわ
941: 2020/12/29(火)20:19 ID:EiaQ+UBu(1) AAS
うっせえ知っとったわ素でまちがえただけじゃわ!ヽ(`Д´)ノウワーン
942
(1): 2020/12/31(木)05:29 ID:/Sdg/sCQ(1/2) AAS
struct A { virtual void Delete() { delete this; } };
struct B : A { void Delete() { delete this; } };
こうなってりゃ別にいらんな
943: 2020/12/31(木)11:50 ID:zS3i4lwe(1/2) AAS
>>795 の同期とか奇妙な質問に思うけど、Javaからくるとそうなるんだな。
944: 2020/12/31(木)12:23 ID:3Es5+lkr(1) AAS
javaにだって非同期でメモリ確保するコンテナなんてないでしょ
945
(1): 2020/12/31(木)13:41 ID:lvvsunYH(1) AAS
>>942
おとなしく virtual ~A() とするのにくらべて何のメリットも無いな。
946: 2020/12/31(木)13:43 ID:zS3i4lwe(2/2) AAS
deleteのコストは、ほんと気にされないな。
947
(1): 2020/12/31(木)15:24 ID:eCxLbtN/(1/2) AAS
「a=1 かつ b=1 以外なら実行」って条件式はどう書くの?
948: 2020/12/31(木)15:31 ID:7G3T5w7B(1) AAS
>>947
母語で曖昧さの無い表記ができますか?
949
(1): 蟻人間 ◆T6xkBnTXz7B0 [age] 2020/12/31(木)15:40 ID:+0BPso5e(1) AAS
>>950

> 「a=1 かつ b=1 以外なら実行」って条件式はどう書くの?

「「a=1 かつ b=1」以外なら実行」なら、
if (!(a == 1 && b == 1)) { 実行(); }

「a=1 かつ「b=1以外」なら実行」なら、
if (a == 1 && b != 1) { 実行(); }
950
(1): 2020/12/31(木)15:47 ID:eCxLbtN/(2/2) AAS
>>949
THX
「a=1 かつ b=1」以外なら実行、でした。
私が950でレスするのもお見通しですか?w
951: 2020/12/31(木)18:57 ID:/Sdg/sCQ(2/2) AAS
>>945
ただの押しつけだな
うるせーバカ
952: 2021/01/01(金)05:08 ID:FlWhKtLF(1) AAS
CSSは規格の著者がサンプル実装してるというので見に行ったら、Javascriptだった。
あからさまに動的言語向けに規格が書かれているのは、そういうことでしたか。
これは辛い。
953
(2): ◆QZaw55cn4c 2021/01/01(金)18:05 ID:a5HWfmXn(1) AAS
>>792
それはちょっと古臭いお馬鹿な手法でしょう

正しいやりかたは、
・呼び出し側が呼び出され側に格納エリアを提供する‥‥?
・呼び出し側が確保するべきサイズは?の前に別途問い合わせする
954: 2021/01/01(金)18:33 ID:1DPP279V(1) AAS
いずれにしろ面倒
955
(3): 2021/01/02(土)00:08 ID:f21yM1/d(1/3) AAS
CにはCで
#define APPBUFSZ (十分でかい整数値)
void foo() {
  char buf[APPBUFSZ];     // buf[]はスタック上にとられる配列(重要
  if (!func(buf, sizeof(buf))) {  // 第2引数は要素数の意味とするならsizeof(buf) / sizeof([0])
    バッファサイズ不足等のエラー
  }
}
という黄金パターンあるんじゃー
これは原始的な見かけほど不合理というわけではない
956: 2021/01/02(土)00:11 ID:f21yM1/d(2/3) AAS
CSSはDOMの一部でありかつ意味と表記の分離の必要からCSSになった
DOMはWebページのあらゆる要素へのコントロールの実現を目的としている
という印象
957: ◆QZaw55cn4c 2021/01/02(土)00:53 ID:wp0Bo1A/(1) AAS
>>955
kwsk
ちょっとよくわからない‥
958
(1): 2021/01/02(土)02:21 ID:dR/zQLwh(1/2) AAS
>>955
Cってこのパターンでクソほど無駄なバッファ取るから全然効率的じゃないよな
959: 2021/01/02(土)09:15 ID:hdbwvBU0(1) AAS
>>955
何が黄金なのかさっぱりわからんが…
どこでそれが黄金パターンとされているかの出典だけでも頼む
960: 2021/01/02(土)09:25 ID:TBL/2gAq(1) AAS
定番は>>953だろう。
事前にサイズを求めるコストがバカにならないという場合だけ別案を検討するくらいで。
961: 2021/01/02(土)10:59 ID:dR/zQLwh(2/2) AAS
大抵の場合は「事前にサイズを求める」=やり直しになりそうなんだけど
962: 2021/01/02(土)11:29 ID:f21yM1/d(3/3) AAS
>>958
左様よほど意図しない事象でも起きない限りエラー処理に行かないぐらい大き目にとる
スタック上に領域をとる場合、時間コストも空間コストもゼロとみなせるからそれで構わない
再帰呼び出しのようなきわめて深い関数呼び出し階層になるときぐらいしか問題は生じない
というわけで、プログラミングしたいこと/すべきことに対するちょっとした洞察と
アーキテクチャーに関する理解さえあれば、言うほど非効率でも不合理でもないことがわかるはず…
963: 2021/01/02(土)11:39 ID:YOqoG5bU(1) AAS
>953
確保すべきサイズを問い合わせたときと確保して呼び出した時に必要サイズが変わっていないか気になって夜しか眠れない
(リトライしてもリトライ回数が適切かどうか気になって布団以外で眠れない)
964
(1): 2021/01/02(土)19:19 ID:TRpAMVE2(1/2) AAS
std::make_sharedにインターフェースクラスを継承したクラスを渡したいんですがエラーになりました
これは生ポインタ使えと言うことでしょうか?
外部リンク:ideone.com
965
(1): 蟻人間 ◆T6xkBnTXz7B0 [age] 2021/01/02(土)19:28 ID:VBbIup1J(1) AAS
>>964
外部リンク[html]:programming-place.net
966: 2021/01/02(土)19:32 ID:TRpAMVE2(2/2) AAS
>>965
デストラクタとコンストラクタの定義書いたらコンパイルできました
どうもありがとう
967: 2021/01/03(日)08:55 ID:tz0lNZPE(1/2) AAS
chromiumのソースみると全面的にstd::unique_ptrを使ってるので、少なくともC++11 以降。
968: 2021/01/03(日)09:00 ID:tz0lNZPE(2/2) AAS
レンダリングコアチーム29名中3名が日本人。
969
(1): 2021/01/03(日)14:01 ID:A/6DePqP(1/2) AAS
newしたクラスをdeleteすればクラス内で保持した変数のメモリも自動的に解放されるのでしょうか? 
970: 2021/01/03(日)14:08 ID:I3Vvl19p(1) AAS
>>969
「クラス内で保持」の仕方による。
deleteに伴って各メンバ変数のデストラクタが呼び出されるので、自動的に解放されるようにすることはできる。
971
(1): 2021/01/03(日)14:31 ID:A/6DePqP(2/2) AAS
ポインタの参照先は解放されないとかですかね?
972: 2021/01/03(日)15:46 ID:ytOMOpf7(1) AAS
所有してるメモリなら解放されて欲しいけど借用してるメモリは解放されちゃ困るででょ
973: 2021/01/04(月)03:53 ID:wIiDK2+4(1) AAS
借りてる金を誰かが返してくれるなら良いお話では?
974: 2021/01/04(月)06:10 ID:FFXfDp9J(1) AAS
>>971
スマポ使ったら?
975
(2): 2021/01/04(月)19:46 ID:0C4iSsrn(1) AAS
めちゃくちゃ初歩的な質問で申し訳ないのですが文字で「"」を出力したい場合はどうするのですか?
cout<<"これ→"←"<<endl;
とすると出力したい文字が「これ→」までだと認識されエラーが発生しますよね…
976: 2021/01/04(月)19:50 ID:0tciJGtx(1) AAS
えすけぇぷ
977: 蟻人間 ◆T6xkBnTXz7B0 [age] 2021/01/04(月)19:52 ID:RRkyDjZk(1) AAS
バックスラッシュor
半角の円記号
を使う
978: ◆QZaw55cn4c 2021/01/04(月)19:53 ID:SE/uzuCD(1) AAS
>>975
外部リンク:ideone.com
979
(2): 2021/01/05(火)02:42 ID:GBNfOfsJ(1) AAS
外部リンク:ideone.com
バックスラッシュではうまくいったのに半角の円記号ではうまくいきません!
980: ◆QZaw55cn4c 2021/01/05(火)02:46 ID:SOx0PxdD(1) AAS
>>979
外部リンク:ideone.com
981: 2021/01/05(火)07:30 ID:rKfNNjQV(1) AAS
>>975
cout << R"(cout<<"これ→"←"<<endl;)";
982: 2021/01/05(火)08:35 ID:JJaPBKYs(1) AAS
cout << R"fuckU(cout<<"これ→"←"<<endl;)fuckU";
ただしC++11以降な
983: 2021/01/05(火)09:02 ID:x+1hwr2M(1) AAS
>>979
macでよくハマるw
984: 2021/01/06(水)09:32 ID:UTmmPnLW(1) AAS
HTML5は規格通りに実装できるけど、CSSは規格通りに実装できないな。
Chromiumは、Blink以前はBison使ってたけど、Blink以降は手書きパーサになってる。
もはや、クラス名や属性名を見て処理をわけないと衝突を解決できない。
985: 2021/01/07(木)01:07 ID:DfoUdJtt(1) AAS
次スレ下さい。
1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.184s*