次スレを立てる時は本文の1行目に以下を追加して下さい。
!extend:on:vvvvv:1000:512
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。
前スレ
C++相談室 part137 (正しくはpart138)
http://mevius.5ch.net/test/read.cgi/tech/1535353320/
C++相談室 part139
https://mevius.5ch.net/test/read.cgi/tech/1538755188/
C++相談室 part140
https://mevius.5ch.net/test/read.cgi/tech/1547326582/
C++相談室 part141
https://mevius.5ch.net/test/read.cgi/tech/1550772463/
このスレもよろしくね。
【初心者歓迎】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
探検
C++相談室 part142
レス数が950を超えています。1000を超えると書き込みができなくなります。
2019/04/01(月) 22:17:05.84ID:wmfpIKt/
877デフォルトの名無しさん
2019/06/10(月) 09:53:37.04ID:5SR5C4JK そんなもん飼ってる上司の責任だろ
糞ができるまで放置してたのか?
糞ができるまで放置してたのか?
878デフォルトの名無しさん
2019/06/10(月) 13:21:16.85ID:SLwWwvWV879デフォルトの名無しさん
2019/06/10(月) 14:24:51.11ID:MigAkPcZ テンプレートってそんな身構えるようなものかな?
外部ツールとマクロで武装した旧黒魔術系のコードに比べたら、なんぼかましな気がするがw
外部ツールとマクロで武装した旧黒魔術系のコードに比べたら、なんぼかましな気がするがw
880デフォルトの名無しさん
2019/06/10(月) 14:45:47.43ID:SLwWwvWV もちろん便利にはなったけど、STL以来むやみにテンプレートを持ち上げる風潮が・・・
初心者が上級者を気取りたくてテンプレート持て囃し、それだけに留まらずオブジェクト指向や昔ながらのテクニックをこき下ろしてるのを良く見かける
実行時、コンパイル時、プリプロセス時でそれぞれメリットデメリットあるんだけどなぁ
初心者が上級者を気取りたくてテンプレート持て囃し、それだけに留まらずオブジェクト指向や昔ながらのテクニックをこき下ろしてるのを良く見かける
実行時、コンパイル時、プリプロセス時でそれぞれメリットデメリットあるんだけどなぁ
881デフォルトの名無しさん
2019/06/10(月) 15:05:36.77ID:psqZaESW プロ(仕事)の話と初心者の話が一緒になっちゃってるな
882デフォルトの名無しさん
2019/06/10(月) 15:44:38.79ID:EWMjDPPL 初心者を指導せずほったらかしにしてる上司がいるらしい
883デフォルトの名無しさん
2019/06/10(月) 16:11:30.07ID:psqZaESW884デフォルトの名無しさん
2019/06/10(月) 17:43:59.55ID:sRT+YLgZ できる奴が書いたテンプレートライブラリを使いこなせない奴が、グダグダ文句言っているだけだろ。
言っている奴ができる奴なら文句言う前に修正しているわ
言っている奴ができる奴なら文句言う前に修正しているわ
885デフォルトの名無しさん
2019/06/10(月) 18:56:35.92ID:OlE51f/u まあマクロとかテンプレートとかみんな一度はやり過ぎるぐらい作り込んだことあるだろ
多分>>854をそれを経験した直後ぐらいなんだろ
多分>>854をそれを経験した直後ぐらいなんだろ
886デフォルトの名無しさん
2019/06/10(月) 19:08:07.57ID:YayWwtn2 無職がおしごとごっこでつか?w
以下、職業プログラマじゃない者は書き込み禁止
以下、職業プログラマじゃない者は書き込み禁止
887デフォルトの名無しさん
2019/06/10(月) 19:10:51.22ID:ZJKeta/Q マ板でやれ
888デフォルトの名無しさん
2019/06/10(月) 19:16:09.39ID:EWMjDPPL 労働厨とかいう下級国民
889デフォルトの名無しさん
2019/06/10(月) 19:22:32.34ID:5SR5C4JK お前らautoとdecltype(auto)の違いとか言語仕様の話しで盛り上がれよ
890デフォルトの名無しさん
2019/06/10(月) 19:22:55.85ID:SLwWwvWV891デフォルトの名無しさん
2019/06/10(月) 19:27:55.90ID:EWMjDPPL イテレータを受け入れる関数もオーバーロードで書いてるんですか?
892デフォルトの名無しさん
2019/06/10(月) 20:00:14.92ID:J/wxl4Rl893デフォルトの名無しさん
2019/06/10(月) 20:34:00.20ID:0NZRWrrl auto int i =0;
K&Rはこれでいけたんだがのう
K&Rはこれでいけたんだがのう
894デフォルトの名無しさん
2019/06/10(月) 20:37:49.85ID:W52LT1uh int不要とかそういう話?
895デフォルトの名無しさん
2019/06/10(月) 20:48:57.81ID:9ReisgX6 decltype(auto)はあまり使わないなぁ
長いし
面倒だからauto&&で受けちゃうし
戻り値推論もauto&とかで済ましちゃう
長いし
面倒だからauto&&で受けちゃうし
戻り値推論もauto&とかで済ましちゃう
896デフォルトの名無しさん
2019/06/10(月) 21:07:56.06ID:Ii7tq5Jr >>884
こういうクソな思想が広まってるからクソライブラリがあとを絶たないわけだ。
こういうクソな思想が広まってるからクソライブラリがあとを絶たないわけだ。
897デフォルトの名無しさん
2019/06/10(月) 21:35:34.30ID:9ReisgX6 クソクソ言うだけで、何がどう悪いとすら具体的に例を上げないのだからもうね
898デフォルトの名無しさん
2019/06/10(月) 21:36:31.46ID:YayWwtn2899デフォルトの名無しさん
2019/06/10(月) 21:55:37.04ID:EWMjDPPL900デフォルトの名無しさん
2019/06/10(月) 22:04:08.27ID:irHYgLSK utf8の文字定数って実質ASCIIしか使えないのかコレ
901デフォルトの名無しさん
2019/06/10(月) 22:42:42.99ID:J/wxl4Rl902デフォルトの名無しさん
2019/06/10(月) 23:08:47.95ID:j+S7HtNV ていうかテンプレートが絡むととたんに問題解決できなくなるプロ
903デフォルトの名無しさん
2019/06/10(月) 23:51:39.69ID:Ii7tq5Jr テンプレートの問題なんてもう語り尽くしたわ。
それでもバカがあと立たないのもずっと見てきた。。
それでもバカがあと立たないのもずっと見てきた。。
904デフォルトの名無しさん
2019/06/11(火) 00:19:02.01ID:QaZP7mkq テンプレートの問題について何も聞いてないし、その状態で語り尽くしたというなら何も問題はないな。
905デフォルトの名無しさん
2019/06/11(火) 00:19:41.89ID:kvB4pOtR 新規参入者がいるってことだから恐悦至極なのではないか
906デフォルトの名無しさん
2019/06/11(火) 00:25:55.32ID:PO+d8+1v (果たして彼にとってはテンプレートのみが例外的に特殊な問題であって
テンプレート以外については十分なスキルを有しているのであろうか…
テンプレート以外については十分なスキルを有しているのであろうか…
907デフォルトの名無しさん
2019/06/11(火) 00:53:07.47ID:7MvjruKl コンパイル時に発見できるような問題はそもそもたいして深刻な問題ではない。
908デフォルトの名無しさん
2019/06/11(火) 01:02:03.28ID:TJ/Njjhl909デフォルトの名無しさん
2019/06/11(火) 01:13:48.45ID:7MvjruKl910デフォルトの名無しさん
2019/06/11(火) 01:26:55.77ID:TJ/Njjhl そもそも文脈不明な中でそれだけ書かれてもなぁ
コンパイル時の分かるような問題かどうかではなく、エラーをコンパイル時に吐いてくれるとデバッグが捗るみたいに書けば良いのに
実際、assertやstatic_assert
SFINAE使ってのなるべく上位レイヤーでエラー発生させるのは重要でしょ
コンパイル時の分かるような問題かどうかではなく、エラーをコンパイル時に吐いてくれるとデバッグが捗るみたいに書けば良いのに
実際、assertやstatic_assert
SFINAE使ってのなるべく上位レイヤーでエラー発生させるのは重要でしょ
911デフォルトの名無しさん
2019/06/11(火) 01:51:30.87ID:GDgSrcmQ テンプレート駆使したライブラリ使うと最適化ありなしで速度かなり変わるの困る
デバッグビルドだとくそおっそくてデバッグがままならん
なんか良い解決法ないですかね?
デバッグビルドだとくそおっそくてデバッグがままならん
なんか良い解決法ないですかね?
912デフォルトの名無しさん
2019/06/11(火) 02:00:33.22ID:TJ/Njjhl 適当なところで切る
処理の定義を別ヘッダに分けて、特定のソースファイルで定義ヘッダを読み、デバッグが必要ないところは最適化Onで明示的インスタンス化をする
処理の定義を別ヘッダに分けて、特定のソースファイルで定義ヘッダを読み、デバッグが必要ないところは最適化Onで明示的インスタンス化をする
913デフォルトの名無しさん
2019/06/11(火) 02:07:42.02ID:7MvjruKl914デフォルトの名無しさん
2019/06/11(火) 02:12:17.79ID:bsFR+Nzy C++14以降でテンプレートのデザインパターンの参考書って無い?
915デフォルトの名無しさん
2019/06/11(火) 02:42:42.36ID:Pe41E3Zb テンプレート完全ガイドの2版が出てたけど、英語
916デフォルトの名無しさん
2019/06/11(火) 22:59:30.61ID:GDgSrcmQ917デフォルトの名無しさん
2019/06/12(水) 00:12:16.75ID:EuvWtF/E VSならプロジェクトじゃなくソースのプロパティ選んで最適化変えればそこだけ反映される
まあ、それ用の構成作っておくのが安全
CMakeはわからん
makeなら簡単だけど
まあ、それ用の構成作っておくのが安全
CMakeはわからん
makeなら簡単だけど
918デフォルトの名無しさん
2019/06/12(水) 09:35:50.45ID:eCiQ25Tx c++の場合、このコンパイラでは通るけどこっちのコンパイラでは通らないとかが
普通にある方が問題。
静的だとか動的かとかそういう問題とはまた違う。
普通にある方が問題。
静的だとか動的かとかそういう問題とはまた違う。
919デフォルトの名無しさん
2019/06/12(水) 09:39:04.87ID:dM+mHpC4920デフォルトの名無しさん
2019/06/12(水) 12:59:45.38ID:pwRz5TOC921デフォルトの名無しさん
2019/06/12(水) 16:21:34.99ID:7KGE0Knu Java、C#は「コンパイラが1つしかない言語」に含む?
どのみち比較の対象が少ないね。
どのみち比較の対象が少ないね。
922デフォルトの名無しさん
2019/06/12(水) 16:22:16.09ID:7cC3bFV5 普通はコンパイラは何種類もない
923デフォルトの名無しさん
2019/06/12(水) 16:24:55.92ID:EuvWtF/E そこら辺もバージョン違いで色々あるよね
924デフォルトの名無しさん
2019/06/12(水) 16:31:31.49ID:7cC3bFV5 そんなの当たり前だろ
925デフォルトの名無しさん
2019/06/12(水) 16:40:28.14ID:7KGE0Knu 「コンパイラが通らない問題を解消するためにビルドツールをご用意いたしました。」
で、configureやらcmakeやらantやらといった車輪の再発明が続々生まれてくる。
で、configureやらcmakeやらantやらといった車輪の再発明が続々生まれてくる。
926デフォルトの名無しさん
2019/06/12(水) 17:19:03.04ID:79FLB/Pn ブラウザ戦争に近いものがあるな
927デフォルトの名無しさん
2019/06/12(水) 18:48:39.87ID:eqhLCWed モダンなC++を学ぶべく右辺値参照について勉強しているのですがさっぱりわかりません
本に右辺値参照は実際は左辺値でstd::moveは実際は何もmoveしない
と書いてありましたが本当に意味がわからない
言葉遊びはいいからわかりやすく教えてくれ
本に右辺値参照は実際は左辺値でstd::moveは実際は何もmoveしない
と書いてありましたが本当に意味がわからない
言葉遊びはいいからわかりやすく教えてくれ
928デフォルトの名無しさん
2019/06/12(水) 19:07:22.06ID:iR6eT4Op929蟻人間 ◆T6xkBnTXz7B0
2019/06/12(水) 19:12:10.36ID:KzwP9Gzw >>927
誤解を恐れずに言うと、std::moveを付けると、&&が付いた特殊な型になる。その型のことを右辺値参照という。ムーヴコンストラクターやムーヴ代入などは、その特殊な型に対して行われる。
誤解を恐れずに言うと、std::moveを付けると、&&が付いた特殊な型になる。その型のことを右辺値参照という。ムーヴコンストラクターやムーヴ代入などは、その特殊な型に対して行われる。
930蟻人間 ◆T6xkBnTXz7B0
2019/06/12(水) 19:17:22.52ID:KzwP9Gzw &&が付いた引数は、中身の所有権を他の場所に譲り渡すことができる。
例えば、文字列クラスだったら、ポインタが指し示す文字列の所有権だ。所有権をコピーせずに、移動するだけなら、処理コストが低くて済む。
例えば、文字列クラスだったら、ポインタが指し示す文字列の所有権だ。所有権をコピーせずに、移動するだけなら、処理コストが低くて済む。
>>930
所有権って何ですか?
私は一つの関数で new/malloc() した領域を、別の関数に渡し、さらに別の関数で delete/free() してますが、効率よくそういうことをする場合には所有権という架空のフレームは邪魔だと思います
所有権って何ですか?
私は一つの関数で new/malloc() した領域を、別の関数に渡し、さらに別の関数で delete/free() してますが、効率よくそういうことをする場合には所有権という架空のフレームは邪魔だと思います
932デフォルトの名無しさん
2019/06/12(水) 19:36:15.70ID:qnyyQkgz >>931
まさにそれをする為のフレームやん。
まさにそれをする為のフレームやん。
933デフォルトの名無しさん
2019/06/12(水) 19:38:15.23ID:eqhLCWed934デフォルトの名無しさん
2019/06/12(水) 19:45:51.10ID:qnyyQkgz 右辺値というのはほっといたら消える。
どうせ消えるんだったら右辺値が確保してるメモリ、こっちでちゃんと解放するからもらうね→所有権の移動
もちろん所有権移動したので右辺値でメモリ解放しちゃダメよ。
どうせ消えるんだったら右辺値が確保してるメモリ、こっちでちゃんと解放するからもらうね→所有権の移動
もちろん所有権移動したので右辺値でメモリ解放しちゃダメよ。
935デフォルトの名無しさん
2019/06/12(水) 19:47:37.87ID:GZDxeRSP >>933
所有権が移るというか...
T&& x を引数に持つ関数(コンストラクタが多い)は右辺値を受け取るけど、
そこで x の所有するリソースを
分捕っていいという「慣習」「イディオム」があるというだけなんだよ。
所有権が移るというか...
T&& x を引数に持つ関数(コンストラクタが多い)は右辺値を受け取るけど、
そこで x の所有するリソースを
分捕っていいという「慣習」「イディオム」があるというだけなんだよ。
936蟻人間 ◆T6xkBnTXz7B0
2019/06/12(水) 20:10:41.45ID:0iE+TYdc >>933
そこを厳密に理解するには、lvalue, rvalue, prvalueなどの値カテゴリを理解しないといけない。
https://ja.cppreference.com/w/cpp/language/value_category
要するにlvalueをxvalueにするために、std::moveを使う。
remove_referenceは、type traitsと呼ばれる「型に対する演算」を行っているに過ぎない。
std::moveの実装のremove_referenceは、冗長な参照を削除している。
type traitsは、テンプレートに慣れないと使いどころが分からないだろう。
そこを厳密に理解するには、lvalue, rvalue, prvalueなどの値カテゴリを理解しないといけない。
https://ja.cppreference.com/w/cpp/language/value_category
要するにlvalueをxvalueにするために、std::moveを使う。
remove_referenceは、type traitsと呼ばれる「型に対する演算」を行っているに過ぎない。
std::moveの実装のremove_referenceは、冗長な参照を削除している。
type traitsは、テンプレートに慣れないと使いどころが分からないだろう。
937蟻人間 ◆T6xkBnTXz7B0
2019/06/12(水) 20:24:57.03ID:0iE+TYdc class STRING
{
public:
...
// ムーヴコンストラクタ(一例です)。
STRING(STRING&& s) : m_ptr(nullptr)
{
std::swap(m_ptr, s.m_ptr);
}
// ムーヴ代入(一例です)。
STRING& operator=(STRING&& s)
{
std::swap(m_ptr, s.m_ptr);
return *this;
}
protected: char *m_ptr;
};
...
STRING s("abc123");
STRING t;
t = std::move(s);
{
public:
...
// ムーヴコンストラクタ(一例です)。
STRING(STRING&& s) : m_ptr(nullptr)
{
std::swap(m_ptr, s.m_ptr);
}
// ムーヴ代入(一例です)。
STRING& operator=(STRING&& s)
{
std::swap(m_ptr, s.m_ptr);
return *this;
}
protected: char *m_ptr;
};
...
STRING s("abc123");
STRING t;
t = std::move(s);
938蟻人間 ◆T6xkBnTXz7B0
2019/06/12(水) 20:34:03.21ID:0iE+TYdc 右辺値参照で挫折したら、Rustに進むがいい。
C++を完全に理解した人間は1%も居ない。
C++を完全に理解した人間は1%も居ない。
939デフォルトの名無しさん
2019/06/12(水) 20:39:57.61ID:W9DAWVrH 蟻人間は行列理解からだな
940蟻人間 ◆T6xkBnTXz7B0
2019/06/12(水) 21:02:08.90ID:KzwP9Gzw あほですみません。。。
941デフォルトの名無しさん
2019/06/12(水) 21:03:19.70ID:wMzR7R80 難しいというよりただ複雑
概念的にそれほど難しいわけではない
概念的にそれほど難しいわけではない
942デフォルトの名無しさん
2019/06/12(水) 21:07:19.74ID:JHNh+ipy ムーブセマンティクスは今世紀最大の発明と言われてるからね。
943デフォルトの名無しさん
2019/06/12(水) 21:11:21.95ID:7TWmWXJk 最近は標準ライブラリも文法も分かりやすくなったなと思ったら
initializer_list絡みの初期化がこのやろう
initializer_list絡みの初期化がこのやろう
944デフォルトの名無しさん
2019/06/12(水) 21:17:48.45ID:hxuK959+ ・仮引数が右辺値参照&&なら、そこに渡した変数はぶっ壊される(そのかわり速いかもしれない)
・ただし安全のために使い捨ての一時変数か、std::moveを付けて「壊していいよ」と明示したものしか渡せないようになってる
これだけ理解してればだいたいOK
・ただし安全のために使い捨ての一時変数か、std::moveを付けて「壊していいよ」と明示したものしか渡せないようになってる
これだけ理解してればだいたいOK
945デフォルトの名無しさん
2019/06/12(水) 21:27:52.71ID:7cC3bFV5 ややこしいとか言う奴に限ってパターンの一覧表作っていつでも参照できるようにしないよな
946デフォルトの名無しさん
2019/06/12(水) 21:52:10.38ID:eqhLCWed このスレを読んだらだんだんわかってきました
>>937
なるほど
この例で使い方は何となく理解できたかもしれないです
abc123を一切コピーすることなく引き渡しているということですね
コンストラクタに右辺値が渡された時は自動的に&&のコンストラクタがよばれ(これはコンパイラが自動で判断してくれる)
コピーでは明示的に右辺値参照にしないとダメなのでstd::moveを使うと
>>937
なるほど
この例で使い方は何となく理解できたかもしれないです
abc123を一切コピーすることなく引き渡しているということですね
コンストラクタに右辺値が渡された時は自動的に&&のコンストラクタがよばれ(これはコンパイラが自動で判断してくれる)
コピーでは明示的に右辺値参照にしないとダメなのでstd::moveを使うと
947デフォルトの名無しさん
2019/06/12(水) 21:59:50.66ID:eCiQ25Tx 右辺値判定はコンパイラ側も困ってそう
948デフォルトの名無しさん
2019/06/12(水) 22:03:44.51ID:hxuK959+ 厳密に決まってるから困らないぞ
949デフォルトの名無しさん
2019/06/12(水) 22:42:16.79ID:JHNh+ipy 【 constexpr の掟】
「ブッ殺す」と心の中で思ったならッ!その時スデに行動は終わっているんだッ!
「ブッ殺す」と心の中で思ったならッ!その時スデに行動は終わっているんだッ!
950デフォルトの名無しさん
2019/06/12(水) 23:19:39.59ID:zt+60oVn951デフォルトの名無しさん
2019/06/12(水) 23:36:10.29ID:dKzVqNYa moveしたあとの変数を使おうとしたらエラー出してくれるの?
952デフォルトの名無しさん
2019/06/12(水) 23:44:04.96ID:vc+7745/ まさか
953デフォルトの名無しさん
2019/06/12(水) 23:51:54.31ID:EuvWtF/E 元の内容について所有権を失っているだけで普通は使える様になっている
スマポならnull相当
vectorみたいなのならemptyもしくは何らかのごみが入っているのでclearか新たに代入すればおk
スマポならnull相当
vectorみたいなのならemptyもしくは何らかのごみが入っているのでclearか新たに代入すればおk
954デフォルトの名無しさん
2019/06/13(木) 00:01:02.92ID:GxcaYm6A955デフォルトの名無しさん
2019/06/13(木) 00:16:54.69ID:VunnpS2y 合ってるだろ
ムーブ後のオブジェクトは内容は未規定だけど有効な状態だぞ、少なくとも組み込み型と標準ライブラリはな
褒められたプログラミングスタイルかはともかく、再利用すること自体が即間違いとは言えない
ムーブ後のオブジェクトは内容は未規定だけど有効な状態だぞ、少なくとも組み込み型と標準ライブラリはな
褒められたプログラミングスタイルかはともかく、再利用すること自体が即間違いとは言えない
956デフォルトの名無しさん
2019/06/13(木) 00:26:16.00ID:/TtN03F/ >>951
ムーブコンストラクタを書いて自分で処理するんだよw
ムーブコンストラクタを書いて自分で処理するんだよw
957デフォルトの名無しさん
2019/06/13(木) 00:26:51.45ID:scxOg7Fk コンパイル時に既に顧客の要求を満たしてるとかマジカッコいい
958デフォルトの名無しさん
2019/06/13(木) 01:25:50.43ID:bj2tv0KH 少なくとも標準ライブラリでこれが出来ないと、メンバ変数の内容一つmoveしただけで親のオブジェクトまで使えなくなる。
メンバ変数再利用する術が無いってことだからね
メンバ変数再利用する術が無いってことだからね
959デフォルトの名無しさん
2019/06/13(木) 01:41:54.12ID:/Ra8Vlso >>957
未初期化の変数をコンパイル時に検出できるんだからmoveした後かどうかも判定できるはずでしょ
未初期化の変数をコンパイル時に検出できるんだからmoveした後かどうかも判定できるはずでしょ
960デフォルトの名無しさん
2019/06/13(木) 02:03:22.10ID:/TtN03F/961デフォルトの名無しさん
2019/06/13(木) 03:03:13.46ID:bj2tv0KH 2分木で子のスマポ所有しているような場合、付け替えとかで所有権の移動するときshared_ptrならコピーでokだけど、unique_ptrみたいなのだとmoveする事になるが、メンバ変数で持っていた子の内容をmoveしたあとその変数が再利用可能じゃないと困るだろ
962デフォルトの名無しさん
2019/06/13(木) 03:21:55.87ID:/TtN03F/ >>961
c++11で導入されたmoveはいわゆる所有権の移動とは違うもなので、その場合はmoveは使えないと思う。
c++11で導入されたmoveはいわゆる所有権の移動とは違うもなので、その場合はmoveは使えないと思う。
963デフォルトの名無しさん
2019/06/13(木) 03:33:01.74ID:fPdkPYzy >>962
unique_ptrのmoveが所有権の移動じゃないと言うなら一体何なら「所有権の移動」だと言うのか。
unique_ptrのmoveが所有権の移動じゃないと言うなら一体何なら「所有権の移動」だと言うのか。
964デフォルトの名無しさん
2019/06/13(木) 03:46:23.77ID:/TtN03F/ もともと右辺値参照とmoveセマンティクスの話じゃなかったっけ?
965デフォルトの名無しさん
2019/06/13(木) 04:35:02.91ID:qBl/BLKs ループの中で int a なる整数を使うとき、ループ内で毎回宣言するのとループの外で宣言して使い回すのどっちが結局速いの?
966デフォルトの名無しさん
2019/06/13(木) 09:17:30.68ID:wJ3u1v7j 自分で計ればいいじゃん
967デフォルトの名無しさん
2019/06/13(木) 11:30:46.72ID:eqzI8P56 ループの外に出せるものは可能な限りすべて出せ
968デフォルトの名無しさん
2019/06/13(木) 12:09:07.93ID:Br82W2pC 範囲for文を使ってそんなどうでもいいことは忘れろ
969デフォルトの名無しさん
2019/06/13(木) 13:18:06.43ID:XHz4etUG970デフォルトの名無しさん
2019/06/13(木) 13:33:35.83ID:eqzI8P56 スコープ気にするならループ関係の部分だけでスコープ区切ればいいじゃん
971デフォルトの名無しさん
2019/06/13(木) 15:27:33.99ID:P5difHG2 >>970
お前は何を言ってるんだよ…
お前は何を言ってるんだよ…
972デフォルトの名無しさん
2019/06/13(木) 15:28:06.57ID:PncfQdvG cppcheckやVisual Studioのような静的コード解析にかけると「スコープを小さくできるよ?」みたいなアドバイスが出るよね。
実際のところ、どうなんだろうね。typoしにくくなったりスタックサイズが小さくなる利点があるとは思うけど。
実際のところ、どうなんだろうね。typoしにくくなったりスタックサイズが小さくなる利点があるとは思うけど。
973デフォルトの名無しさん
2019/06/13(木) 16:20:20.51ID:fzRArnQO さすがにこの流れは草
974デフォルトの名無しさん
2019/06/13(木) 16:22:08.63ID:jHLKLHUC ちょうど今朝cppcheckかけたら
style: The scope of the variable 'c' can be reduced.
「変数 c のスコープを縮小できますよ」って出たわ。
つまり「スコープを狭くできるなら狭くすべき」っていう方針を、
(少なくともcppcheckを作ってる人は)採用してるんだろうな。
どっちが速いかについては、ちょっと最適化オプションつければ
結局同じマシン語になっちゃうんじゃないかしら。
style: The scope of the variable 'c' can be reduced.
「変数 c のスコープを縮小できますよ」って出たわ。
つまり「スコープを狭くできるなら狭くすべき」っていう方針を、
(少なくともcppcheckを作ってる人は)採用してるんだろうな。
どっちが速いかについては、ちょっと最適化オプションつければ
結局同じマシン語になっちゃうんじゃないかしら。
975デフォルトの名無しさん
2019/06/13(木) 16:29:14.63ID:gMp0DWLA976デフォルトの名無しさん
2019/06/13(木) 16:30:01.81ID:57+ky1er スコープ広いほうが良いなら最終的に全部グローバルにしろやになるやんけ
レス数が950を超えています。1000を超えると書き込みができなくなります。
