次スレを立てる時は本文の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/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++相談室 part140
レス数が900を超えています。1000を超えると表示できなくなるよ。
2019/01/13(日) 05:56:22.70ID:9RrR7Arz
809デフォルトの名無しさん
2019/02/15(金) 07:16:18.56ID:RIb8T56M それjavaでやってる奴見たことあるけど無駄すぎて周囲に陰で笑われてたぞ
810デフォルトの名無しさん
2019/02/15(金) 11:35:50.98ID:1MviBXkk >>808。
Cの時代から普通にあるよ。構造体で渡すまでもない場合はそれが最も効率がいい。
int add( int x, int y )
{
return x+ y;
}
float fadd( float x, float y )
{
return x+ y;
}
とか。
Cの時代から普通にあるよ。構造体で渡すまでもない場合はそれが最も効率がいい。
int add( int x, int y )
{
return x+ y;
}
float fadd( float x, float y )
{
return x+ y;
}
とか。
811デフォルトの名無しさん
2019/02/15(金) 12:00:51.60ID:F9XRfxx5 MyIntとかやっちゃうの?
812デフォルトの名無しさん
2019/02/15(金) 12:19:55.21ID:PR4djPv7 ↑とか言って人を見下す奴もゴミのようなtypedefの山には疑問を抱かないのがC++er
813デフォルトの名無しさん
2019/02/15(金) 12:29:01.92ID:QcXsKv+O logとって足し算or引き算に降格なんて良くする事でしょ
814デフォルトの名無しさん
2019/02/15(金) 12:31:45.75ID:1MviBXkk >>800
C++ で参照渡しする理由は:
1.構造体などをそのまま引数に渡すと、スタックにコピーする動作が入ってしまい、
構造体のサイズが大きいと時間がかかる。参照渡すにすると先頭アドレス
(4バイト、または、8バイト)だけがスタックにコピーされるので効率がいい。
int, float などは、中身のサイズとアドレスのサイズが変わらないので参照渡し
にしてもコピー動作に置いては効率が上がらない。そして、実際に引数を
読み取る段階では、参照渡しは1クロックほど時間が余計にかかってしまう。
2. 戻り値には1つの値/オブジェクト/変数しか返すことが出来ない。そのため、2つ以上の
値を返したい場合には、C では伝統的には、引数にポインタ渡しで変数の先頭アドレス
を渡し、そのアドレスを介して対応する変数に値を書き込む方法をとっていた。
C++ では、ポインタ * の変わりに参照 & を使うことが出来るようになった。
参照の方が見易かったり、分かりやすかったりする事があるといわれている。
3. const int &a や const float &a では、値を呼び出し側に返すことが出来ない。なぜなら、
const 属性が付いているから呼び出された関数側からは書き込めないため。
その上、アドレスのBIT数が、中身のBIT数と同じか、むしろ大きいので、実引数から
スタックにある仮引数へのコピー動作に置いても効率も上がらない。
さらに、参照なので、実際に読み取るときには1クロック余計な時間がかかってしまう。
だから、int a や float a で渡すほうが良い。
C++ で参照渡しする理由は:
1.構造体などをそのまま引数に渡すと、スタックにコピーする動作が入ってしまい、
構造体のサイズが大きいと時間がかかる。参照渡すにすると先頭アドレス
(4バイト、または、8バイト)だけがスタックにコピーされるので効率がいい。
int, float などは、中身のサイズとアドレスのサイズが変わらないので参照渡し
にしてもコピー動作に置いては効率が上がらない。そして、実際に引数を
読み取る段階では、参照渡しは1クロックほど時間が余計にかかってしまう。
2. 戻り値には1つの値/オブジェクト/変数しか返すことが出来ない。そのため、2つ以上の
値を返したい場合には、C では伝統的には、引数にポインタ渡しで変数の先頭アドレス
を渡し、そのアドレスを介して対応する変数に値を書き込む方法をとっていた。
C++ では、ポインタ * の変わりに参照 & を使うことが出来るようになった。
参照の方が見易かったり、分かりやすかったりする事があるといわれている。
3. const int &a や const float &a では、値を呼び出し側に返すことが出来ない。なぜなら、
const 属性が付いているから呼び出された関数側からは書き込めないため。
その上、アドレスのBIT数が、中身のBIT数と同じか、むしろ大きいので、実引数から
スタックにある仮引数へのコピー動作に置いても効率も上がらない。
さらに、参照なので、実際に読み取るときには1クロック余計な時間がかかってしまう。
だから、int a や float a で渡すほうが良い。
815デフォルトの名無しさん
2019/02/15(金) 12:49:09.91ID:1MviBXkk >>814
手短に説明するのは難しいが、float と double は、それぞれ32BIT、64BITで、
ポインタのBIT数と同じかどうかは、使ってるOSのBIT数によって違ってくる。
だから、double 型を参照渡しで渡した場合、わずかに効率が上がる場合が
絶対ないとは言い切れないかもしれない。ただし、その場合でも、参照型
の仮引数を実際に読み取るときには、「間接参照」というアセンブラで書くと、
[アドレス値] や、[ポインタ値] のようなオペランドを持った mov 命令が
1つ追加で必要になって、1クロック分余計にかかる。
なお、処理系によっては、関数呼び出しに置いては、float 型でも、double 型として
渡される場合があるかもしれない。
だから、関数呼び出しの時点でわずかに効率が上がっても、読み取る段階で
1クロック遅くなるかも知れない。だから、この位のBIT数の変数の場合で、
値を呼び出し側に戻り値として「出力(返す)」すつもりではい場合には、
参照渡しにせず、値渡しにしたほうが良いと考えられる。
手短に説明するのは難しいが、float と double は、それぞれ32BIT、64BITで、
ポインタのBIT数と同じかどうかは、使ってるOSのBIT数によって違ってくる。
だから、double 型を参照渡しで渡した場合、わずかに効率が上がる場合が
絶対ないとは言い切れないかもしれない。ただし、その場合でも、参照型
の仮引数を実際に読み取るときには、「間接参照」というアセンブラで書くと、
[アドレス値] や、[ポインタ値] のようなオペランドを持った mov 命令が
1つ追加で必要になって、1クロック分余計にかかる。
なお、処理系によっては、関数呼び出しに置いては、float 型でも、double 型として
渡される場合があるかもしれない。
だから、関数呼び出しの時点でわずかに効率が上がっても、読み取る段階で
1クロック遅くなるかも知れない。だから、この位のBIT数の変数の場合で、
値を呼び出し側に戻り値として「出力(返す)」すつもりではい場合には、
参照渡しにせず、値渡しにしたほうが良いと考えられる。
816デフォルトの名無しさん
2019/02/15(金) 13:09:37.97ID:PbZwx3xa void hoge(const int *x)と同じことだろ
817デフォルトの名無しさん
2019/02/15(金) 13:17:50.81ID:+vpba137 そんなところの速度気にする前に無駄なI/Oや描画処理がないかとかクソみたいなアルゴリズム使ってないかとかを心配しろ
818デフォルトの名無しさん
2019/02/15(金) 13:20:58.06ID:TwCl7FFb C++もC#みたいに参照渡しで呼び出す方にoutやref修飾子みたいなのを明示的に書けるようにしてほしいわ
結果を引数の参照に代入することの欠点は一見してそれが参照渡しか分からないことにある
別に強制じゃなくていいからさ
結果を引数の参照に代入することの欠点は一見してそれが参照渡しか分からないことにある
別に強制じゃなくていいからさ
819デフォルトの名無しさん
2019/02/15(金) 13:52:43.03ID:PR4djPv7 constなら区別する必要ないだろ
渡されたものを書き換えるなら生ポにすればよい
渡されたものを書き換えるなら生ポにすればよい
820デフォルトの名無しさん
2019/02/15(金) 14:12:58.62ID:TNDmXWGM >>798-799
これだな
「著作権侵害だから」という理由で「スクリーンショットを規制」するとマジで死ぬというのをかつて証明した実例がある
https://gunosy.com/articles/RImqe
これだな
「著作権侵害だから」という理由で「スクリーンショットを規制」するとマジで死ぬというのをかつて証明した実例がある
https://gunosy.com/articles/RImqe
821デフォルトの名無しさん
2019/02/15(金) 14:18:59.83ID:TNDmXWGM >>806
「だけ」で言うとフレームワークとかライブラリとかモジュールとか全部自作なら大変だな
「だけ」で言うとフレームワークとかライブラリとかモジュールとか全部自作なら大変だな
823デフォルトの名無しさん
2019/02/15(金) 14:20:59.00ID:TNDmXWGM >>810
テンプレ使え
テンプレ使え
824デフォルトの名無しさん
2019/02/15(金) 14:23:38.85ID:4dfOS9DP テンプレ嫌い
専門のライブラリ屋が書くのは良いけどてめーらは書くな
専門のライブラリ屋が書くのは良いけどてめーらは書くな
825デフォルトの名無しさん
2019/02/15(金) 16:09:39.03ID:RIb8T56M ライブラリ屋だが
826デフォルトの名無しさん
2019/02/15(金) 17:00:19.18ID:F2gH28Km >>816
ならvoid hoge(const int *const x)だな
ならvoid hoge(const int *const x)だな
827デフォルトの名無しさん
2019/02/15(金) 18:23:56.85ID:G4vKReT9828デフォルトの名無しさん
2019/02/15(金) 19:47:35.40ID:zLdO+ouL void hoge(const int &x)
初心者がたまにこうやって書いてるの見るわw
初心者がたまにこうやって書いてるの見るわw
829デフォルトの名無しさん
2019/02/15(金) 21:23:45.17ID:+vpba137 >>827
描画やI/Oで非効率なことしてたら、intの受け渡しのこまけえ話なんかと比べて
冗談抜きに10億倍とか時間かかったりするんだから先にそっち気にしろってだけだけど
この話を必要な機能を削れって解釈する奴もいるんだな
リアルで思い当たりあるわ、なるほど勉強になった
描画やI/Oで非効率なことしてたら、intの受け渡しのこまけえ話なんかと比べて
冗談抜きに10億倍とか時間かかったりするんだから先にそっち気にしろってだけだけど
この話を必要な機能を削れって解釈する奴もいるんだな
リアルで思い当たりあるわ、なるほど勉強になった
>>814
>参照の方が見易かったり、分かりやすかったりする事がある
http://www.kh.rim.or.jp/~nagamura/misc/stroustrup-interview.html
「彼が言うには、変数を参照しているのか逆参照しているのかがいつもわからなくなる、だから必ずポインタを使う。アスタリスクが思い出させてくれるから」
>参照の方が見易かったり、分かりやすかったりする事がある
http://www.kh.rim.or.jp/~nagamura/misc/stroustrup-interview.html
「彼が言うには、変数を参照しているのか逆参照しているのかがいつもわからなくなる、だから必ずポインタを使う。アスタリスクが思い出させてくれるから」
>>828
このスットコドッコイめ、「void hoge(const VeryBigClass &x)」は定石ぞよ
このスットコドッコイめ、「void hoge(const VeryBigClass &x)」は定石ぞよ
832デフォルトの名無しさん
2019/02/15(金) 21:41:03.28ID:WriY8atd833デフォルトの名無しさん
2019/02/15(金) 21:54:00.64ID:TsvBUbar834デフォルトの名無しさん
2019/02/15(金) 22:01:14.10ID:PR4djPv7835デフォルトの名無しさん
2019/02/15(金) 22:29:36.78ID:M7c4VM5H >>833
めっちゃclangが消し去りそうなコードw
めっちゃclangが消し去りそうなコードw
836デフォルトの名無しさん
2019/02/15(金) 22:45:50.97ID:ZriHGp8e ぬるぽをデリファレンスした時点で未定義動作だから受け取る側はそんなもん考慮しなくていいし渡した奴が悪い
参照がnullptrかどうかチェックするコードなんか書いたところでコンパイラが最適化で除去しちゃうぞ
参照がnullptrかどうかチェックするコードなんか書いたところでコンパイラが最適化で除去しちゃうぞ
837デフォルトの名無しさん
2019/02/15(金) 22:57:42.33ID:/qDgZA0Q 参照渡しにするとありがたいのは勝手にconst扱いになることだ
例: void foo(const char* p) { ... } // p自体はconstではない
void bar(const char& c) { ... } // 引数のどこにも非const要素が無い
ポインタで同じことをしようとするとfoo()は次のように書かねばならない
void foo(const char* const p) { ... }
例: void foo(const char* p) { ... } // p自体はconstではない
void bar(const char& c) { ... } // 引数のどこにも非const要素が無い
ポインタで同じことをしようとするとfoo()は次のように書かねばならない
void foo(const char* const p) { ... }
838デフォルトの名無しさん
2019/02/15(金) 23:01:30.49ID:zLdO+ouL839デフォルトの名無しさん
2019/02/15(金) 23:05:24.07ID:/qDgZA0Q 訂正orz、
△: 勝手にconst扱いになる
○: 勝手にアドレスがconst扱いになる
あと参照は同一の字面で変数の実体を差し換えられるというのが
ポインタより圧倒的に優れてゐる、すなわち
Foo::m_someDataをm_someDataとして直接参照する10億行のコードを書き直すことなく
FooWrapper::m_someDataに対する操作に差し換えることができる
ポインタではこれはできない(正確に言うと、プリプロセッサを悪用したらできる「こともある」が
△: 勝手にconst扱いになる
○: 勝手にアドレスがconst扱いになる
あと参照は同一の字面で変数の実体を差し換えられるというのが
ポインタより圧倒的に優れてゐる、すなわち
Foo::m_someDataをm_someDataとして直接参照する10億行のコードを書き直すことなく
FooWrapper::m_someDataに対する操作に差し換えることができる
ポインタではこれはできない(正確に言うと、プリプロセッサを悪用したらできる「こともある」が
840デフォルトの名無しさん
2019/02/15(金) 23:11:11.98ID:G4vKReT9 0で割ると例外が発生しますか?
841デフォルトの名無しさん
2019/02/15(金) 23:36:01.69ID:ZriHGp8e C++の例外なら発生しない
CPU例外なら発生する
CPU例外なら発生する
842デフォルトの名無しさん
2019/02/15(金) 23:40:28.46ID:M7c4VM5H 整数はCPUレベルの例外が起こる
浮動小数は±∞かNaNになる
浮動小数は±∞かNaNになる
843デフォルトの名無しさん
2019/02/16(土) 02:18:09.31ID:OHubCgoF じゃあnoexceptってことでいいですか?
844デフォルトの名無しさん
2019/02/16(土) 03:40:53.24ID:PL3DLWvZ WinならSEH例外をC++で捕捉できるんじゃないっけ
845デフォルトの名無しさん
2019/02/16(土) 05:52:35.21ID:/Su8h7T9 ゼロによる割り算って、未定義の動作になるんじゃないか?
CとC++で、あるいは規格のバージョン間で違うのかもしれんけど、
とりあえずCの整数ではゼロで割ると未定義動作って資料を見つけられた。
規格に手が届く人の検証を求めたいところ。
CとC++で、あるいは規格のバージョン間で違うのかもしれんけど、
とりあえずCの整数ではゼロで割ると未定義動作って資料を見つけられた。
規格に手が届く人の検証を求めたいところ。
846デフォルトの名無しさん
2019/02/16(土) 05:55:58.95ID:LvaIzR5y 言語としては未定義だけど一般的なコンピュータでは動作停止するかOSに落とされる
847デフォルトの名無しさん
2019/02/16(土) 08:45:05.13ID:q1DAaOKG 0割で動作停止するコンピューターなんて見たことないわ
848デフォルトの名無しさん
2019/02/16(土) 09:14:28.81ID:YRUE5/P+ >>842
実は、浮動小数の場合は、例外を発生させるか、値をNaNやINFにするかを
CPUの制御レジスタのフラグ類などであらかじめ設定できるようになっている。
だから、0で割り算した場合に例外ハンドラを起動させるようにすることも
可能。
実は、浮動小数の場合は、例外を発生させるか、値をNaNやINFにするかを
CPUの制御レジスタのフラグ類などであらかじめ設定できるようになっている。
だから、0で割り算した場合に例外ハンドラを起動させるようにすることも
可能。
849デフォルトの名無しさん
2019/02/16(土) 09:16:46.83ID:Njn41q/4 >>847
昔は有ったよ。
「0除算例外」という「割り込み」が生じるが、MS-DOS などの16BIT-OSでは
それをOSが処理しない場合があって、その場合は、アプリだけでなく、OS
まるごとハングアップしたり、再起動したりする事があった。
昔は有ったよ。
「0除算例外」という「割り込み」が生じるが、MS-DOS などの16BIT-OSでは
それをOSが処理しない場合があって、その場合は、アプリだけでなく、OS
まるごとハングアップしたり、再起動したりする事があった。
850デフォルトの名無しさん
2019/02/16(土) 09:43:23.27ID:CCOmn+yc ドヤッ
851デフォルトの名無しさん
2019/02/16(土) 10:17:27.91ID:q1DAaOKG852デフォルトの名無しさん
2019/02/16(土) 15:24:09.94ID:LvaIzR5y OSが安全に処理してくれてるだけでOSが無ければ止まるよ
853デフォルトの名無しさん
2019/02/16(土) 17:49:12.32ID:q1DAaOKG854デフォルトの名無しさん
2019/02/16(土) 18:06:39.50ID:mSqP7pCT アイドリングで止まってるか暴走で同じところを回ってるのとの違いでしかない
(発熱以外違いはない?)
(発熱以外違いはない?)
>>853
あなたのいう「暴走」の定義はなんですか?
ゼロ割のinterruptが発生したら然るべきルーチンを呼び出すだけなのでは?
それが何をするかは定義しだいだが、暴走!?みたいなことが発生することはないのでは?
あなたのいう「暴走」の定義はなんですか?
ゼロ割のinterruptが発生したら然るべきルーチンを呼び出すだけなのでは?
それが何をするかは定義しだいだが、暴走!?みたいなことが発生することはないのでは?
856デフォルトの名無しさん
2019/02/16(土) 18:26:44.19ID:STqQL4YT 突然始まるガベコレで長期間CPU占有されて
表面上使ってるひとには止まってると思われる状況は発生するし
一般人はそれを文字通り止まってるとみなすだろう
表面上使ってるひとには止まってると思われる状況は発生するし
一般人はそれを文字通り止まってるとみなすだろう
>>856
最近のソフトで Full GC が走ってしまうことなんてあるのかな…
最近のソフトで Full GC が走ってしまうことなんてあるのかな…
858デフォルトの名無しさん
2019/02/16(土) 18:43:27.21ID:e4F3ujKc 今ハード割り込みなんて気にするソフト書くとしたらOSがないやつだよね
859デフォルトの名無しさん
2019/02/16(土) 18:46:53.94ID:LE6s3aZE プロセスとして切り離しとけってアドバイスでこんなの終わりだろ。
860デフォルトの名無しさん
2019/02/16(土) 18:56:31.75ID:q1DAaOKG861デフォルトの名無しさん
2019/02/16(土) 18:57:29.43ID:q1DAaOKG >>856
こんなスレで一般人の感想を言われても…
こんなスレで一般人の感想を言われても…
862デフォルトの名無しさん
2019/02/16(土) 19:57:22.22ID:OHubCgoF 一般人とか言い出すのはLinux板だけかと思ってた、ワロ。
863デフォルトの名無しさん
2019/02/17(日) 02:38:22.89ID:WKDw+26J ていうか今目の前にある環境でコード書いて試せばすぐわかることを聞いてくるやつは
エアC++
エアC++
864デフォルトの名無しさん
2019/02/17(日) 04:21:07.23ID:N1izVyMt Visual Studioでコード書いても何もわからない。
とても都合よくできてるから。
こっちが標準になればいいのに。
とても都合よくできてるから。
こっちが標準になればいいのに。
865デフォルトの名無しさん
2019/02/17(日) 04:25:41.02ID:p4FwcX/Y ラムダ式がいまだに書けないし読めないんだけど
書きたくなるようなメリット教えてくれ
書きたくなるようなメリット教えてくれ
866デフォルトの名無しさん
2019/02/17(日) 04:28:58.95ID:N1izVyMt 読みやすいし楽だからでは。
867デフォルトの名無しさん
2019/02/17(日) 04:46:40.12ID:4OnEl3He C++を使うとコンパイラエラーで悩むことが多いがラムダは複雑そうなのに非常に素直だ。ラムダで問題がでることが一度もない。素直でできがいいと思うが残念なことに
そんなに使い道がない。
そんなに使い道がない。
868さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/02/17(日) 04:51:22.12ID:fsVSWZKv 関数の内部で関数を定義できる。すなわち、例えばデカい関数からいちいちその関数の外側に注意を向ける必要が無くなる。
869デフォルトの名無しさん
2019/02/17(日) 05:00:32.63ID:N1izVyMt 述語に使えば。
870デフォルトの名無しさん
2019/02/17(日) 05:04:23.32ID:CcQWXdbL STLでもboostでもQtでも使いまくるだろ
871さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/02/17(日) 05:05:22.93ID:fsVSWZKv std::sortの述語に使うのはよくあるね。
872デフォルトの名無しさん
2019/02/17(日) 05:32:44.80ID:4OnEl3He873デフォルトの名無しさん
2019/02/17(日) 05:36:53.53ID:bztXspcu std::thread t([&]() {
....
});
とか。
....
});
とか。
874デフォルトの名無しさん
2019/02/17(日) 06:17:10.31ID:4OnEl3He875さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/02/17(日) 06:33:40.59ID:fsVSWZKv std::threadはスレッド。すなわち並列処理ができる。以前は別の場所に並列処理を行う関数を書かないと
いけなかったのが、ラムダを使えば処理をその場で書くことができる。
いけなかったのが、ラムダを使えば処理をその場で書くことができる。
876デフォルトの名無しさん
2019/02/17(日) 06:53:15.35ID:naWxhgEk >>865
いちいち関数名考えなくて済むでしょ
いちいち関数名考えなくて済むでしょ
877デフォルトの名無しさん
2019/02/17(日) 07:51:55.06ID:O/E0SKNM そんなしょうもない理由、どうでもいいわ。
てか可読性上げるために少しは考えろや。
他の言語なんかだったら部分的に引数を適用した関数(カリー化)が使いやすくなるとかはある。
てか可読性上げるために少しは考えろや。
他の言語なんかだったら部分的に引数を適用した関数(カリー化)が使いやすくなるとかはある。
878デフォルトの名無しさん
2019/02/17(日) 09:00:43.73ID:naWxhgEk 名前付をしょうもない理由とか言う奴はもれなく使えない
そもそもその場で書いてるから可読性も上がるし
ラムダ使えない奴の戯言でしかないな
そもそもその場で書いてるから可読性も上がるし
ラムダ使えない奴の戯言でしかないな
879デフォルトの名無しさん
2019/02/17(日) 09:47:35.17ID:EB+Wm9hA 処理の一部を関数として受け取れるように関数書いといて
呼び側はラムダを好きに作ってそこに突っ込む
DRYするときとかに割とよくやるでしょ
呼び側はラムダを好きに作ってそこに突っ込む
DRYするときとかに割とよくやるでしょ
880デフォルトの名無しさん
2019/02/17(日) 11:01:41.76ID:4OnEl3He >>875
なるほど。それはC#なんかではよく思った。以前はdelegate関数を定義するのがめんどくさくてかなわなかった。
しかしC++はマイコンでしか使わないし、まだ恐る恐る使ってるレベルなのでthreadとかは使ったことがない。
以前はPC側はC#、マイコンはCと使い分けて書いていて今回初めてマイコンにC++を使ってるが便利
だとは思うが、困ることも多い。
二人で開発をしているが、相方が意味のない機能をやたらつかいたがる。string やvectorをドンドン
使うのでプログラムが無意味にバカでかくなってしまう。自分は基本的にCレベルの機能しか使わない。
でもクラスやNamesapce が整理する上では便利だし、constexperも好き。
ラムダはデバッグターミナルを切り替えるのに使ってるが他にはつかうところが思いつかなかった。
なるほど。それはC#なんかではよく思った。以前はdelegate関数を定義するのがめんどくさくてかなわなかった。
しかしC++はマイコンでしか使わないし、まだ恐る恐る使ってるレベルなのでthreadとかは使ったことがない。
以前はPC側はC#、マイコンはCと使い分けて書いていて今回初めてマイコンにC++を使ってるが便利
だとは思うが、困ることも多い。
二人で開発をしているが、相方が意味のない機能をやたらつかいたがる。string やvectorをドンドン
使うのでプログラムが無意味にバカでかくなってしまう。自分は基本的にCレベルの機能しか使わない。
でもクラスやNamesapce が整理する上では便利だし、constexperも好き。
ラムダはデバッグターミナルを切り替えるのに使ってるが他にはつかうところが思いつかなかった。
881デフォルトの名無しさん
2019/02/17(日) 11:05:05.20ID:ihUXQF5N ラムダ式は名称が良くない
882デフォルトの名無しさん
2019/02/17(日) 11:10:40.23ID:vi4O111w >>880
君にはCがお似合いじゃないかな
コンパイルや実行時のある程度のオーバーヘッドを許容してでもOOPを導入して
楽に安全に大規模で複雑なプログラムを開発しようってコンセプトに馴染めないんだろう?
stringやvectorを使うとはそういうことだからこれを無意味と考えてる時点で向いてない
君にはCがお似合いじゃないかな
コンパイルや実行時のある程度のオーバーヘッドを許容してでもOOPを導入して
楽に安全に大規模で複雑なプログラムを開発しようってコンセプトに馴染めないんだろう?
stringやvectorを使うとはそういうことだからこれを無意味と考えてる時点で向いてない
883デフォルトの名無しさん
2019/02/17(日) 11:14:31.53ID:taqGnUFh マイコンならCで関数ポインタ使うような所で一部代わりに使う感じじゃないの
ポインタを動的に取り替えたりしないなら間接参照がなくなって速くなる
ポインタを動的に取り替えたりしないなら間接参照がなくなって速くなる
884デフォルトの名無しさん
2019/02/17(日) 11:28:22.52ID:WAEZojeG 頭が悪くてその機能を理解出来ず使いこなせないだけなのに
「書きたくなるようなメリット教えろ」と言い換えてるだけだ
「わたしの頭が悪い」ではなく「わたしにその機能にメリットが無いように見せているのが悪い(そちらから自発的にアピールしないのが悪い)」としてる
バカじゃないのかこいつ
「書きたくなるようなメリット教えろ」と言い換えてるだけだ
「わたしの頭が悪い」ではなく「わたしにその機能にメリットが無いように見せているのが悪い(そちらから自発的にアピールしないのが悪い)」としてる
バカじゃないのかこいつ
885デフォルトの名無しさん
2019/02/17(日) 11:32:45.27ID:pY7p2BwH C++で安全になってるプロジェクトを見たことがありません。
886デフォルトの名無しさん
2019/02/17(日) 11:55:17.00ID:Y22Zw0Bq >>884
上の発言はおいらが書いたわけじゃないけど、どんどん色々と新しくなってるから
おいらも含めて昔からC++を使ってた人にとっては、vector、string、
smart pointerなどは知らないことなんだよ。文字列はMFCのCString使ってたし、
vectorの代わりに、自作のクラス・テンプレートを使ってた。
上の発言はおいらが書いたわけじゃないけど、どんどん色々と新しくなってるから
おいらも含めて昔からC++を使ってた人にとっては、vector、string、
smart pointerなどは知らないことなんだよ。文字列はMFCのCString使ってたし、
vectorの代わりに、自作のクラス・テンプレートを使ってた。
887デフォルトの名無しさん
2019/02/17(日) 12:13:43.95ID:vi4O111w >>885
それはC++のコンセプトを理解せずにまるでCみたいな手法を混ぜ込んでくる人が一定数居ることが最大の原因だろうね
Cを使うと低スキルのゲロゲロなC++プログラマを排除できるけど
C++を使っても低スキルのゲロゲロなCプログラマは排除できない
これはC++の弱点と言っていいだろう
それはC++のコンセプトを理解せずにまるでCみたいな手法を混ぜ込んでくる人が一定数居ることが最大の原因だろうね
Cを使うと低スキルのゲロゲロなC++プログラマを排除できるけど
C++を使っても低スキルのゲロゲロなCプログラマは排除できない
これはC++の弱点と言っていいだろう
888デフォルトの名無しさん
2019/02/17(日) 12:19:18.91ID:EB+Wm9hA vector stringがない昔ってC++98より前のお話か・・・?
889デフォルトの名無しさん
2019/02/17(日) 13:07:09.82ID:Y22Zw0Bq >>888
1998当時、本を買ってC++を学ぶと、C++98 の事は書いてなかったんだよ。
C++98 が本に書かれるようになったのは、何年か後。
使えても、実際に使われるようになったのは、感覚的には、
この5〜10年ほどなんじゃないかと思う。
1998当時、本を買ってC++を学ぶと、C++98 の事は書いてなかったんだよ。
C++98 が本に書かれるようになったのは、何年か後。
使えても、実際に使われるようになったのは、感覚的には、
この5〜10年ほどなんじゃないかと思う。
890デフォルトの名無しさん
2019/02/17(日) 13:26:22.07ID:taqGnUFh VCが糞すぎた時代が長かったからねえ
だいたいあいつのせい
だいたいあいつのせい
891デフォルトの名無しさん
2019/02/17(日) 13:31:49.98ID:B6Z0xbW8892デフォルトの名無しさん
2019/02/17(日) 13:47:28.47ID:GrqAm9XM >>887
リーナス乙
リーナス乙
893デフォルトの名無しさん
2019/02/17(日) 13:50:11.60ID:7mUUrd8D >>857
GCは知らんけどSSDとかのレロケーションで固まったように見えるケースはあるね
GCは知らんけどSSDとかのレロケーションで固まったように見えるケースはあるね
894デフォルトの名無しさん
2019/02/17(日) 14:51:27.44ID:CcQWXdbL895デフォルトの名無しさん
2019/02/17(日) 16:14:40.21ID:Y22Zw0Bq このスレを見ようとすると、
503 Service Temporarily Unavailable
が出る人いる? 書くことは出来るはずだから、書いてみて。
503 Service Temporarily Unavailable
が出る人いる? 書くことは出来るはずだから、書いてみて。
896デフォルトの名無しさん
2019/02/17(日) 18:54:54.93ID:MvGK95PG897デフォルトの名無しさん
2019/02/17(日) 19:05:30.20ID:+0nZrljm898デフォルトの名無しさん
2019/02/17(日) 19:07:19.51ID:CcQWXdbL fでも良いレベルならfにするしもうちょっと詳しい方がいいときは動詞にする
899デフォルトの名無しさん
2019/02/17(日) 19:18:21.48ID:MvGK95PG >>897
命名面倒だからラムダ式で程度のもならprivateなんだし適当でいいのは同じだろ
命名面倒だからラムダ式で程度のもならprivateなんだし適当でいいのは同じだろ
900デフォルトの名無しさん
2019/02/17(日) 20:01:49.45ID:taqGnUFh メンバ関数だとクラス内全体に名前見えちゃうだろ
スコープ狭いから適当でいいって言ってるのに
スコープ狭いから適当でいいって言ってるのに
901デフォルトの名無しさん
2019/02/17(日) 20:22:43.95ID:naWxhgEk902デフォルトの名無しさん
2019/02/17(日) 22:32:40.23ID:O/E0SKNM >>894
c++慣れしてる人ほどスコープの抜け方になんとなく不安を覚える書き方だからだろ。
c++慣れしてる人ほどスコープの抜け方になんとなく不安を覚える書き方だからだろ。
>>887
>Cを使うと低スキルのゲロゲロなC++プログラマを排除できるけど
>C++を使っても低スキルのゲロゲロなCプログラマは排除できない
無論、低スキルのゲロゲロベロベロなC++を排除できるほうが優れた手法といえるだろう
上記のどちらかを選べ、というのなら、私はそうする
>Cを使うと低スキルのゲロゲロなC++プログラマを排除できるけど
>C++を使っても低スキルのゲロゲロなCプログラマは排除できない
無論、低スキルのゲロゲロベロベロなC++を排除できるほうが優れた手法といえるだろう
上記のどちらかを選べ、というのなら、私はそうする
904はちみつ餃子 ◆8X2XSCHEME
2019/02/17(日) 23:36:21.11ID:7lxezDVs >>886 >>889
俺も 1998 年頃に ARM を読んで C++ を学んだが、そんな恥ずかしいことよう言わんわ。
当時の、それも日本語に限ってもネット上には情報があふれてたし、
2000 年頃になるとCマガ (επιστ?μη の連載) でも string や vector は取り上げてるし、
避けて通る方が難しいくらいの状況だったので、要するにお前が「あえて避けてた (逃げてた)」だけ。
そりゃあ当時の Windows での事情を考えれば MFC が妥当な選択だし、
MFC を使うとなれば文字列は CString を選ばざるを得ないというのはわかるよ。
よほどリソースが限られている組込み系とかなら vector でさえキツいって
状況だってあるかもしれんというのはわかるよ。
それに慣れてたら標準のライブラリの方がなじみが無いかもしれん。
でも、そういったライブラリのクソさに打ちのめされてきた経験があればなおさらのこと、
よりよい標準には飛びつかざるを得ないだろ。
よりよいということが理解できないほどクソの臭さに慣れてしまったなら、
そりゃやっぱりお前がクソなだけだわ。
俺も 1998 年頃に ARM を読んで C++ を学んだが、そんな恥ずかしいことよう言わんわ。
当時の、それも日本語に限ってもネット上には情報があふれてたし、
2000 年頃になるとCマガ (επιστ?μη の連載) でも string や vector は取り上げてるし、
避けて通る方が難しいくらいの状況だったので、要するにお前が「あえて避けてた (逃げてた)」だけ。
そりゃあ当時の Windows での事情を考えれば MFC が妥当な選択だし、
MFC を使うとなれば文字列は CString を選ばざるを得ないというのはわかるよ。
よほどリソースが限られている組込み系とかなら vector でさえキツいって
状況だってあるかもしれんというのはわかるよ。
それに慣れてたら標準のライブラリの方がなじみが無いかもしれん。
でも、そういったライブラリのクソさに打ちのめされてきた経験があればなおさらのこと、
よりよい標準には飛びつかざるを得ないだろ。
よりよいということが理解できないほどクソの臭さに慣れてしまったなら、
そりゃやっぱりお前がクソなだけだわ。
905デフォルトの名無しさん
2019/02/17(日) 23:49:56.95ID:WLFlc2AV 久々のダークサイド餃子
906デフォルトの名無しさん
2019/02/18(月) 00:39:07.20ID:90CTQpRS907はちみつ餃子 ◆8X2XSCHEME
2019/02/18(月) 01:21:22.59ID:ViRlfcsh908デフォルトの名無しさん
2019/02/18(月) 01:21:47.26ID:yYX5e63o 福田の本ほどわかりにくいものはない。
非お勧め。
非お勧め。
レス数が900を超えています。1000を超えると表示できなくなるよ。
ニュース
- 【前橋市】小川晶前市長とラブホテルで打ち合わせをした54歳男性職員を停職処分 今月末で依願退職するという [シャチ★]
- 【おこめ券】鈴木農相 米価維持の意図「一切ない」★2 [ぐれ★]
- 【埼玉】「無免許で高速道路で事故」トラックの追突事故で10代男性死亡 無免許過失運転致死の疑いでトルコ国籍の男(22)逮捕 戸田市 [ぐれ★]
- バリ島で男子生徒ら集団万引きか、防犯カメラ映像が拡散 京都の大谷中学・高校が「窃盗行為」謝罪★6 [七波羅探題★]
- 広島・廿日市、おこめ券配布せず 全市民に3000円現金給付へ [どどん★]
- 【警視庁】走行中の電車で女性に露出した下半身押しつけたか 無職の男(46)逮捕「チャンスがあればいつでもやる」 [nita★]
- 【実況】博衣こよりのえちえちチーズケーキを仕込み(雑談あり)🧪★2
- じゃあ何券だったら、日本人は満足したんだよ [452836546]
- 【速報】1ポンド210円で日英GDP逆転(残り1.5円)...世界6位の経済規模に転落 [237216734]
- 悪気はないのに、不意に相手を傷付けてしまう事ってあるんだな
- 朝日新聞記者「中国軍のレーダー照射はこめかみに銃を突きつけられたのと同じ。僕なら反撃して撃墜してる」高市 [931948549]
- 僕が未だに紙の単行本を集めてる漫画が「ご注文はうさぎですか?」「ゆるゆり」「大室家」「邪神ちゃんドロップキック」なんだが
