次スレを立てる時は本文の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/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++相談室 part141
■ このスレッドは過去ログ倉庫に格納されています
2019/02/22(金) 03:07:43.52ID:MgOIx7iK
781デフォルトの名無しさん
2019/03/27(水) 00:47:30.04ID:Mw4em8Pz tupleは型関数でも重宝するよね
782デフォルトの名無しさん
2019/03/27(水) 00:56:42.26ID:ZXIZSYy+ タプルはなにが嫌といって get<0> とかいうのがものすごく嫌
要素が4個ぐらいになったら1年後ぐらいにコード書き直そうとして
・・えっとこの値取りだすの get<1> だっけ? get<2> だっけ?とか絶対なるから使わない
要素が4個ぐらいになったら1年後ぐらいにコード書き直そうとして
・・えっとこの値取りだすの get<1> だっけ? get<2> だっけ?とか絶対なるから使わない
783デフォルトの名無しさん
2019/03/27(水) 00:58:48.50ID:DfX99uD1 そんな貴方にenum定数
784デフォルトの名無しさん
2019/03/27(水) 01:03:41.91ID:Mw4em8Pz いい加減enumにメンバ関数定義させろと。
enum classの時にどうにかすべきだった気もするが。
後は静的なリフレクションも
enumと文字列の相互変換とか殆ど定型コードになるのにいちいち書くのが面倒すぎる。
マクロで書くのも微妙だし
enum classの時にどうにかすべきだった気もするが。
後は静的なリフレクションも
enumと文字列の相互変換とか殆ど定型コードになるのにいちいち書くのが面倒すぎる。
マクロで書くのも微妙だし
785はちみつ餃子 ◆8X2XSCHEME
2019/03/27(水) 02:16:29.42ID:1nw30Wbv786デフォルトの名無しさん
2019/03/27(水) 02:25:21.92ID:Mw4em8Pz 標準コンテナ使わないらしい人の
抜群のセンスを見てみたいので、コードの一部でも見せて欲しいものだな
抜群のセンスを見てみたいので、コードの一部でも見せて欲しいものだな
787デフォルトの名無しさん
2019/03/27(水) 02:59:41.39ID:V3NaDuAs Eigenが絶妙に不便なんだけど行列演算を標準でサポートする予定ってあるの?
788デフォルトの名無しさん
2019/03/27(水) 03:31:56.74ID:Wsy7XdfH >>786
アイデア盗まれるだけ損。
アイデア盗まれるだけ損。
789デフォルトの名無しさん
2019/03/27(水) 06:12:39.11ID:0QkCU47u センスが悪いというだけで具体的にどこがどう悪いか、どんなだったらセンスが良いのか言わないと、説得力ゼロだな。
790デフォルトの名無しさん
2019/03/27(水) 06:31:30.44ID:J3LATpLk >>743
+1
+1
791デフォルトの名無しさん
2019/03/27(水) 06:40:01.31ID:J3LATpLk >>780
禿
禿
792デフォルトの名無しさん
2019/03/27(水) 06:52:27.00ID:Ojl0EpZo >>784
定型文ならtemplateで書けないの?
定型文ならtemplateで書けないの?
793デフォルトの名無しさん
2019/03/27(水) 07:12:11.84ID:Mw4em8Pz >>792
やりたいことは単にenumの値の識別子とその文字列を対応付けるだけなんだが、templateで書けるの?
enum class Color {
Red,
Green,
Blue
};
inline auto to_string(Color c)
{
switch (c){
case Color::Red:return "Red";
...
}
}
こんな感じのことがしたい
やりたいことは単にenumの値の識別子とその文字列を対応付けるだけなんだが、templateで書けるの?
enum class Color {
Red,
Green,
Blue
};
inline auto to_string(Color c)
{
switch (c){
case Color::Red:return "Red";
...
}
}
こんな感じのことがしたい
794デフォルトの名無しさん
2019/03/27(水) 07:24:00.67ID:DfX99uD1 マクロ Stringizing Operator (#) を使うしかないのでは。
795デフォルトの名無しさん
2019/03/27(水) 07:44:38.63ID:QPwampGA796デフォルトの名無しさん
2019/03/27(水) 07:59:25.35ID:KDFmmUkx ストラウストラップも例外入れるかどうかあたりまでは
かなり真剣に仕様を考えてた印象だけれどそれ以降はタガが外れた感じだ。
最近はもうどうしようもなくなってる。
かなり真剣に仕様を考えてた印象だけれどそれ以降はタガが外れた感じだ。
最近はもうどうしようもなくなってる。
797デフォルトの名無しさん
2019/03/27(水) 08:00:04.09ID:Ojl0EpZo >>793
その処理ならmapかunordered_map使うのが良くないだろうか?
その処理ならmapかunordered_map使うのが良くないだろうか?
798デフォルトの名無しさん
2019/03/27(水) 08:06:10.74ID:QPwampGA なお誰もストラウストラップに意見を出せるほどプログラミング言語の勉強をしていないもよう
799デフォルトの名無しさん
2019/03/27(水) 08:07:01.17ID:Kgbo0Zp4800デフォルトの名無しさん
2019/03/27(水) 08:25:16.34ID:HgdvOlrd 関数の引数として vector<int> を参照渡ししたいのですが、これのデフォルト引数を空の vector<int> にする方法ってありますか
801デフォルトの名無しさん
2019/03/27(水) 08:33:50.59ID:pdL3Pyxp std::vector<int> &v = std::vector<int>() じゃないのん
802デフォルトの名無しさん
2019/03/27(水) 08:43:24.12ID:HgdvOlrd >>801
参照渡しでもそのやり方できますか?
参照渡しでもそのやり方できますか?
803デフォルトの名無しさん
2019/03/27(水) 08:45:04.79ID:pdL3Pyxp やればわかる
804デフォルトの名無しさん
2019/03/27(水) 09:24:45.56ID:7IO5xMdH const?
805デフォルトの名無しさん
2019/03/27(水) 09:33:08.23ID:p4oEJ8zd >>786
センスうんぬんを言ったのはおれじゃないけど、
標準ライブラリ使わないという主張に対して、ソースがエレガントかどうかを問うのは目的がわかってない
端的にいうと標準ライブラリのオーバーヘッドが許容できないんだよ
多少記述が汚くなろうがパフォーマンス引き出すのが優先
cとc++のベンチだと結局cの方がいいスコアになってること多いだろ
(全てがそうでないのは知ってる)
そこをcと同等まで引き上げるわけだ
センスうんぬんを言ったのはおれじゃないけど、
標準ライブラリ使わないという主張に対して、ソースがエレガントかどうかを問うのは目的がわかってない
端的にいうと標準ライブラリのオーバーヘッドが許容できないんだよ
多少記述が汚くなろうがパフォーマンス引き出すのが優先
cとc++のベンチだと結局cの方がいいスコアになってること多いだろ
(全てがそうでないのは知ってる)
そこをcと同等まで引き上げるわけだ
806デフォルトの名無しさん
2019/03/27(水) 09:36:50.33ID:QPwampGA だったらC使ってれば
それ以外の選択肢無いんだから
それ以外の選択肢無いんだから
807デフォルトの名無しさん
2019/03/27(水) 09:40:51.50ID:p4oEJ8zd >>806
そこはアセンブラ使えばというところだろ
そこはアセンブラ使えばというところだろ
808デフォルトの名無しさん
2019/03/27(水) 09:40:55.11ID:pdL3Pyxp809デフォルトの名無しさん
2019/03/27(水) 09:45:55.40ID:p4oEJ8zd いうまでもなく、ボトルネックでないところは労力はかけない
メンテが楽な手法を使う
それに完全にゼロコストなものは普通に使うさ
メンテが楽な手法を使う
それに完全にゼロコストなものは普通に使うさ
810デフォルトの名無しさん
2019/03/27(水) 09:52:34.13ID:U9bjaUkC 標準コンテナでcより遅くなるってどんなパターン?
単方向listで十分なのにlistだと双方向とかそんなやつ?
あんまりlist使わんからよくわからんが
vectorは使い方を余程間違えない限り大抵代替品より速いような
メモリ確保回りはallocator使えばいいし
data使えばただのメモリブロックだよね
単方向listで十分なのにlistだと双方向とかそんなやつ?
あんまりlist使わんからよくわからんが
vectorは使い方を余程間違えない限り大抵代替品より速いような
メモリ確保回りはallocator使えばいいし
data使えばただのメモリブロックだよね
811デフォルトの名無しさん
2019/03/27(水) 10:01:31.18ID:QPwampGA 99%iostreamのこといってるからな
812デフォルトの名無しさん
2019/03/27(水) 10:04:51.88ID:tQ4XPcUj >>810
要素の追加時に容量の拡張が必要かどうかのチェックが入ったりするから、オーバーヘッドはゼロではないよ
要素の追加時に容量の拡張が必要かどうかのチェックが入ったりするから、オーバーヘッドはゼロではないよ
813デフォルトの名無しさん
2019/03/27(水) 10:08:24.05ID:U9bjaUkC814デフォルトの名無しさん
2019/03/27(水) 10:12:49.51ID:QPwampGA Cで作っても同じでワロタ
815デフォルトの名無しさん
2019/03/27(水) 10:22:17.37ID:tQ4XPcUj >>813
便利なものがあれば人間は使ってしまうもんだ
その積み重ねがパフォーマンスの差に繋がる
俺は一般には便利なものを使って時間を節約することでボトルネック解消にかける時間を確保でき、
結果的にパフォーマンスはより高くなると思うけど、そこはスケジュールの制約次第だな
便利なものがあれば人間は使ってしまうもんだ
その積み重ねがパフォーマンスの差に繋がる
俺は一般には便利なものを使って時間を節約することでボトルネック解消にかける時間を確保でき、
結果的にパフォーマンスはより高くなると思うけど、そこはスケジュールの制約次第だな
816デフォルトの名無しさん
2019/03/27(水) 10:29:47.46ID:9ko5ghKo Cマスター「C++は配列に追加するときにサイズチェックするから遅い(キリッ」
wwwwwwwwwwwwwwwwwwwwww
こんな雑魚がでかい顔してるからいつまでもセキュリティホールがなくならないんすなあ
wwwwwwwwwwwwwwwwwwwwww
こんな雑魚がでかい顔してるからいつまでもセキュリティホールがなくならないんすなあ
817デフォルトの名無しさん
2019/03/27(水) 10:34:12.90ID:9ko5ghKo Cマスター「要素追加時にサイズチェックするという便利さの積み重ねがパフォーマンスを落とす(キリッキリッ」
やべえ笑い死にしそう
笑い事じゃないけど
やべえ笑い死にしそう
笑い事じゃないけど
818デフォルトの名無しさん
2019/03/27(水) 12:49:47.89ID:DY72tOrL プロファイラで調べて本当に問題あるならどうにかするけど
ただわざわざc的に書いても大抵誤差レベルでしか変わらんよね
どちらかと言うとバッファの確保の仕方を工夫した方が効果が大きい
ただわざわざc的に書いても大抵誤差レベルでしか変わらんよね
どちらかと言うとバッファの確保の仕方を工夫した方が効果が大きい
819デフォルトの名無しさん
2019/03/27(水) 13:05:12.78ID:fzYgEwLp >>816
トレードオフもわからん雑魚
トレードオフもわからん雑魚
820デフォルトの名無しさん
2019/03/27(水) 13:06:52.67ID:C+1U7WOU >>810
・以下、要素数が N とする。
・C/C++ の原定義の固定長配列は、要素の代入に1クロックしかかからない。もちろん、
O(1)で、物凄く速い。なお、固定長なので「代入」であり「追加」ではない。
・Listはリストだから1個の要素の追加はO(1)で、要素数に依存せず安定した速度が出るが、
内部で、newされるはずなので、最低でも170クロックほどかかってしまう。
・Vectorは動的配列だから、最悪のケースでは要素の追加にO(N)の時間がかかり固定長配列より遅くなる
と思う(よく知らない)。
・以下、要素数が N とする。
・C/C++ の原定義の固定長配列は、要素の代入に1クロックしかかからない。もちろん、
O(1)で、物凄く速い。なお、固定長なので「代入」であり「追加」ではない。
・Listはリストだから1個の要素の追加はO(1)で、要素数に依存せず安定した速度が出るが、
内部で、newされるはずなので、最低でも170クロックほどかかってしまう。
・Vectorは動的配列だから、最悪のケースでは要素の追加にO(N)の時間がかかり固定長配列より遅くなる
と思う(よく知らない)。
821デフォルトの名無しさん
2019/03/27(水) 13:34:58.24ID:tQ4XPcUj >>817
複数の要素を追加するとき、わざわざ事前にまとめてリサイズするか?ということだよ
1要素ずつ処理するのは生ポならかえって面倒になることが多いし、見た目にいかにも非効率そうなコードに見えるから、大抵の人は自然にそうするだろう
一方vectorだとどうだろうね
心理的な問題なの
複数の要素を追加するとき、わざわざ事前にまとめてリサイズするか?ということだよ
1要素ずつ処理するのは生ポならかえって面倒になることが多いし、見た目にいかにも非効率そうなコードに見えるから、大抵の人は自然にそうするだろう
一方vectorだとどうだろうね
心理的な問題なの
822デフォルトの名無しさん
2019/03/27(水) 13:45:54.22ID:tQ4XPcUj 同じようなことはvectorに限らず一般的に言ええて、
例えばC++はRTTIの便利さ故にCと比較してプログラマが無駄なメモリの確保や破棄を行いやすい傾向がある
逆にCだと無駄に大きなバッファ作りがちだったり、バッファの使いまわしによりスレッドセーフでないコードを書きがちであったりする
例えばC++はRTTIの便利さ故にCと比較してプログラマが無駄なメモリの確保や破棄を行いやすい傾向がある
逆にCだと無駄に大きなバッファ作りがちだったり、バッファの使いまわしによりスレッドセーフでないコードを書きがちであったりする
823デフォルトの名無しさん
2019/03/27(水) 13:46:41.13ID:tQ4XPcUj すまんRTTIじゃなくてRAIIな
824デフォルトの名無しさん
2019/03/27(水) 14:07:44.29ID:xtV64SvS クロックなんてわからんじゃろ
825デフォルトの名無しさん
2019/03/27(水) 14:29:28.16ID:t7f2HshG VC++2017なんだけど
デストラクタで投げた例外をキャッチできずabortするのはVC++の仕様?
RAIIとラムダを駆使した自作finally内で
例外投げたらキャッチできずabortしてハマったわ
デストラクタ内で例外投げるのが汚いのは知ってたが
そうか、自作finallyもデストラクタ利用してるからダメなのかな
デストラクタで投げた例外をキャッチできずabortするのはVC++の仕様?
RAIIとラムダを駆使した自作finally内で
例外投げたらキャッチできずabortしてハマったわ
デストラクタ内で例外投げるのが汚いのは知ってたが
そうか、自作finallyもデストラクタ利用してるからダメなのかな
826デフォルトの名無しさん
2019/03/27(水) 14:35:28.06ID:fzYgEwLp デストラクタはデフォルトでnoexceptやで
827デフォルトの名無しさん
2019/03/27(水) 14:54:30.22ID:t7f2HshG サンクス
デストラクタをnoexcept(false)指定したらcatch出来たわ
てことは自作finallyは念のためnoexcept(false)指定にしたほうが良いのか
それか自作finally内で例外投げるのは完全禁止にするか
悩むわ
デストラクタをnoexcept(false)指定したらcatch出来たわ
てことは自作finallyは念のためnoexcept(false)指定にしたほうが良いのか
それか自作finally内で例外投げるのは完全禁止にするか
悩むわ
828デフォルトの名無しさん
2019/03/27(水) 14:56:55.41ID:t7f2HshG まぁでもよく考えたら
例外が発生して自作finallyが実行されてる時に
さらに自作finally内で例外飛ばしたら二重例外になるから危険か
なるほどなるのど
例外が発生して自作finallyが実行されてる時に
さらに自作finally内で例外飛ばしたら二重例外になるから危険か
なるほどなるのど
829デフォルトの名無しさん
2019/03/27(水) 17:38:06.36ID:8XRRZQAn830デフォルトの名無しさん
2019/03/27(水) 17:50:46.31ID:fzYgEwLp 全体じゃなくて一要素やろ?
831デフォルトの名無しさん
2019/03/27(水) 17:55:38.42ID:8XRRZQAn あーそう言うことか
固定長的に使いたいなら始めにresizeするだけじゃない
便利だからチーム内で使ってしまう人がいることを問題にするより、使わずにいちいち独自コードで処理されて余計遅くなったり、バグ仕込まれたりする方が余程ヤバイだろ
固定長的に使いたいなら始めにresizeするだけじゃない
便利だからチーム内で使ってしまう人がいることを問題にするより、使わずにいちいち独自コードで処理されて余計遅くなったり、バグ仕込まれたりする方が余程ヤバイだろ
832デフォルトの名無しさん
2019/03/27(水) 18:00:35.88ID:xtV64SvS 先生、配列の長さにリミットを設ける方法を教えてください
833デフォルトの名無しさん
2019/03/27(水) 18:00:36.53ID:fzYgEwLp まぁそれでも範囲チェックは入るし、常にヒープ使われるし
それすら問題になるようなクリティカルな場所なら生配列なりarray使えばいいと思うけど
適材適所じゃないかねぇ
それすら問題になるようなクリティカルな場所なら生配列なりarray使えばいいと思うけど
適材適所じゃないかねぇ
834デフォルトの名無しさん
2019/03/27(水) 18:03:25.00ID:97C5Fzq7 operator[]なら範囲チェック入らんよ
835デフォルトの名無しさん
2019/03/27(水) 18:14:58.29ID:QPwampGA 末尾に追加の話だろ
836デフォルトの名無しさん
2019/03/27(水) 18:15:04.13ID:fzYgEwLp うお、マジだ誤解してた
837デフォルトの名無しさん
2019/03/27(水) 18:20:39.73ID:fzYgEwLp838デフォルトの名無しさん
2019/03/27(水) 18:39:59.51ID:ZT8Ntgus よくあの時代にこのような洗練されたライブラリを設計できたものだと思います。
もしかすると宇宙人にもらったのかも。
もしかすると宇宙人にもらったのかも。
839デフォルトの名無しさん
2019/03/27(水) 20:06:12.42ID:KDFmmUkx 配列の長さチェックのオーバーヘッドとかなんかものすごくデジャブ感のある議論だな。
肯定、否定どちらにしてもマウンティングかましたくなる題材なんかね。
肯定、否定どちらにしてもマウンティングかましたくなる題材なんかね。
840デフォルトの名無しさん
2019/03/27(水) 21:09:05.61ID:p4oEJ8zd 標準コンテナで問題になるのはやっぱりヒープだよ
境界チェックとか仮に無断だとしても一定時間で終わる処理
ヒープ使われると最悪システムコールで負荷変動大きすぎる
ちなみにアロケータは要素数で管理できないから面倒
あとvectorで最初にreserveしても最大長越えないチェックが必要で面倒
でこれらを解決するコンテナがboostにあるのでそれを使う
境界チェックとか仮に無断だとしても一定時間で終わる処理
ヒープ使われると最悪システムコールで負荷変動大きすぎる
ちなみにアロケータは要素数で管理できないから面倒
あとvectorで最初にreserveしても最大長越えないチェックが必要で面倒
でこれらを解決するコンテナがboostにあるのでそれを使う
841デフォルトの名無しさん
2019/03/27(水) 21:18:02.40ID:p4oEJ8zd あと標準ライブラリのリンクリストはそもそもの設計が非効率
(クリーンな設計ではあるが)
素朴なcの実装と比べてかなり差がでる
これも代替がboostにある
(クリーンな設計ではあるが)
素朴なcの実装と比べてかなり差がでる
これも代替がboostにある
842デフォルトの名無しさん
2019/03/27(水) 21:25:03.72ID:4bSYNNTL >>820
なんか変じゃないですか?
list や vector のときは要素の「追加」なのに、生配列だけ要素の「代入」と設定するのですか?
list や vector で要素の「追加」を考察するのなら、生配列の場合も要素の「追加」を検討してください
なんか変じゃないですか?
list や vector のときは要素の「追加」なのに、生配列だけ要素の「代入」と設定するのですか?
list や vector で要素の「追加」を考察するのなら、生配列の場合も要素の「追加」を検討してください
844デフォルトの名無しさん
2019/03/27(水) 21:38:22.09ID:p4oEJ8zd845デフォルトの名無しさん
2019/03/27(水) 21:45:52.93ID:9ko5ghKo ここのCマスター様は、現在の配列長と挿入インデックスのチェックしてreallocしてなんていう
パフォーマンスの悪い便利さに甘えた処理などしない
堂々とv[N]に無条件代入を行って超高速O(1)追加を実現するのだ
パフォーマンスの悪い便利さに甘えた処理などしない
堂々とv[N]に無条件代入を行って超高速O(1)追加を実現するのだ
846さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/03/27(水) 21:50:08.37ID:X5Tg+wiF 事前のresizeかreserveでええんとちゃう?
847デフォルトの名無しさん
2019/03/27(水) 21:51:09.94ID:t38PuBqi 事前に分かるならスタック固定長でいいじゃん
848デフォルトの名無しさん
2019/03/27(水) 22:02:47.67ID:gbxz82US reserve あれば困る事なんてないやろ
849デフォルトの名無しさん
2019/03/27(水) 23:54:55.06ID:QPwampGA 一般的には無いよ
局所的な話を持ち出してああだこうだ言ってるのが今
そして何をするつもりかは誰も知らん
局所的な話を持ち出してああだこうだ言ってるのが今
そして何をするつもりかは誰も知らん
850デフォルトの名無しさん
2019/03/28(木) 00:42:33.33ID:yLTGLAEP >>829
要素数がN、データの大きさは4バイト、と仮定した場合の話。
要素数がN、データの大きさは4バイト、と仮定した場合の話。
851デフォルトの名無しさん
2019/03/28(木) 00:47:43.37ID:yLTGLAEP >>843
4バイト整数のN要素の配列を仮定しているが、Cの単純な固定長配列だと
4バイト整数はコピーするのが当然。
ところが、Listだと、「追加」するしかない。動的配列である
Vectorも、基本的には「追加」が基本。そうでなければ「動的」と言わない。
4バイト整数のN要素の配列を仮定しているが、Cの単純な固定長配列だと
4バイト整数はコピーするのが当然。
ところが、Listだと、「追加」するしかない。動的配列である
Vectorも、基本的には「追加」が基本。そうでなければ「動的」と言わない。
852デフォルトの名無しさん
2019/03/28(木) 00:53:54.09ID:AOcR4eqo vector.data()、basic_string.c_str()はCと同じの配列の連続アドレスを保証する数少ないインターフェースでしょ。
853デフォルトの名無しさん
2019/03/28(木) 01:07:32.08ID:Csoqrb4z 正直stringがゼロ終端を保証したのはちょっとどうかなと思ってる
いや便利なんだけどさ・・
いや便利なんだけどさ・・
854デフォルトの名無しさん
2019/03/28(木) 01:15:59.09ID:eE4sGejC >>853
特に不都合無いのだからいいだろう
特に不都合無いのだからいいだろう
855デフォルトの名無しさん
2019/03/28(木) 01:39:16.25ID:AOcR4eqo アドレスと一緒にバッファサイズを渡せないAPIが世の中に無数にある。ヌル終端は優しさ。
856デフォルトの名無しさん
2019/03/28(木) 03:12:24.24ID:0b3fKrWQ そもそも printf が
857デフォルトの名無しさん
2019/03/28(木) 05:04:36.64ID:fRHhg+J8859デフォルトの名無しさん
2019/03/28(木) 07:13:39.49ID:mfvsZ6Gk >>851
ようゴCマスター様
マスター様は知らなくてビックリするけど、C++ではvectorやlistは要素数が実行時に決まるときに使うんだ
そして驚くべきことに、Cにも要素数が実行時に決まるときに使うための愚かしい機能がなぜか備わってるんだ
reallocっていうらしいんだけどさ
使うときは確保済みのバッファの長さをいちいち調べて、足りなかったら再確保して必要に応じて要素を全部コピーするらしいっすよ
もちろんそんな馬鹿げたオーバーヘッドを払う奴はC++かぶれのド素人だけだけどな
真のCプログラマは一度確保した配列の自由なインデックスにコピーすることでvectorの無意味なオーバーヘッドを回避し超高速O(1)を実現するのだ
ようゴCマスター様
マスター様は知らなくてビックリするけど、C++ではvectorやlistは要素数が実行時に決まるときに使うんだ
そして驚くべきことに、Cにも要素数が実行時に決まるときに使うための愚かしい機能がなぜか備わってるんだ
reallocっていうらしいんだけどさ
使うときは確保済みのバッファの長さをいちいち調べて、足りなかったら再確保して必要に応じて要素を全部コピーするらしいっすよ
もちろんそんな馬鹿げたオーバーヘッドを払う奴はC++かぶれのド素人だけだけどな
真のCプログラマは一度確保した配列の自由なインデックスにコピーすることでvectorの無意味なオーバーヘッドを回避し超高速O(1)を実現するのだ
860デフォルトの名無しさん
2019/03/28(木) 08:00:11.54ID:PaLXcDGr なんかツッコもうと思ったら既に>>813に書いてあった
861デフォルトの名無しさん
2019/03/28(木) 10:11:22.12ID:yLTGLAEP862デフォルトの名無しさん
2019/03/28(木) 11:32:51.21ID:yLTGLAEP >>859
>そして驚くべきことに、Cにも要素数が実行時に決まるときに使うための愚かしい機能がなぜか備わってるんだ
>reallocっていうらしいんだけどさ
Cでは、realloc は推奨されて無い。
Cで、要素数が実行時に決まるような集合を扱いたい場合は、自前で
ポインタでリンクする、リンクリストを使う。
毎回それをやると間違いやすいので、賢い人は、自前でリストライブラリを作って
それを用いて操作する。
>そして驚くべきことに、Cにも要素数が実行時に決まるときに使うための愚かしい機能がなぜか備わってるんだ
>reallocっていうらしいんだけどさ
Cでは、realloc は推奨されて無い。
Cで、要素数が実行時に決まるような集合を扱いたい場合は、自前で
ポインタでリンクする、リンクリストを使う。
毎回それをやると間違いやすいので、賢い人は、自前でリストライブラリを作って
それを用いて操作する。
863デフォルトの名無しさん
2019/03/28(木) 11:39:08.71ID:dMtNAb9A Linuxのソースなんだけど
close(0) close(1) close(2)って書いてあるの見つけたのだが
これってなんの効果が期待できるの?
ファイルディスクリプタ?だと思っていてオープン等をした値番号だと思ってたけど、0 1 2に該当するのがなんなのかと
close(0) close(1) close(2)って書いてあるの見つけたのだが
これってなんの効果が期待できるの?
ファイルディスクリプタ?だと思っていてオープン等をした値番号だと思ってたけど、0 1 2に該当するのがなんなのかと
864デフォルトの名無しさん
2019/03/28(木) 12:01:08.00ID:5UOqavsG stdin, stdout, stderr
865デフォルトの名無しさん
2019/03/28(木) 12:18:22.29ID:des+yyG9 iteratorでstartとendの中に納まってることが保証されてるのに
各要素にアクセスするときにまた範囲チェックとかあると無駄やん
そりゃ書こうと思えばいくらでも危険なコードは書けるけど
安全なときはそういうの省いて高速化出来るのがCの良いところなのに
(レジスタの値が知らない間に壊れても正常に動くようにとか言ってるなら知らん)
各要素にアクセスするときにまた範囲チェックとかあると無駄やん
そりゃ書こうと思えばいくらでも危険なコードは書けるけど
安全なときはそういうの省いて高速化出来るのがCの良いところなのに
(レジスタの値が知らない間に壊れても正常に動くようにとか言ってるなら知らん)
866デフォルトの名無しさん
2019/03/28(木) 12:31:30.80ID:yd30y0n6 >>861
固定とか決めつけてるのを別にしても何を言いたいのかさっぱりわからん
固定とか決めつけてるのを別にしても何を言いたいのかさっぱりわからん
867デフォルトの名無しさん
2019/03/28(木) 12:34:41.89ID:OvbnMtjj868デフォルトの名無しさん
2019/03/28(木) 12:45:22.23ID:yiBU3VRL 差異があるとすれば、deep copyだね
決めつけ良くない
決めつけ良くない
869デフォルトの名無しさん
2019/03/28(木) 12:48:36.64ID:ADAikd1k >>862
ランタイムでサイズが決まる動的配列にリンクリスト使うのはさすがにダメすぎる
ランタイムでサイズが決まる動的配列にリンクリスト使うのはさすがにダメすぎる
870デフォルトの名無しさん
2019/03/28(木) 12:56:24.56ID:TvMamSuP >>863
デーモンになりたいんだろうな
デーモンになりたいんだろうな
871デフォルトの名無しさん
2019/03/28(木) 13:00:41.99ID:yLTGLAEP872デフォルトの名無しさん
2019/03/28(木) 13:05:17.92ID:AOcR4eqo >>869,871
ソートはどうなの? (・∀・)ニヤニヤ
ソートはどうなの? (・∀・)ニヤニヤ
873デフォルトの名無しさん
2019/03/28(木) 13:06:22.45ID:AOcR4eqo 春休みでスレの勢いが上がり、スレの品質が落ちた。
874デフォルトの名無しさん
2019/03/28(木) 13:22:32.10ID:des+yyG9 義務教育でプログラミングとか教えたら
もっと変なの増えそう
python界隈に来ないで欲しい
もっと変なの増えそう
python界隈に来ないで欲しい
875デフォルトの名無しさん
2019/03/28(木) 13:29:56.71ID:t1sztID7876デフォルトの名無しさん
2019/03/28(木) 13:49:18.36ID:KoUoPeo+ そのへんの化石言語はいい加減消滅させるべき
877デフォルトの名無しさん
2019/03/28(木) 13:51:20.07ID:0CdADxX3 化石じゃないまだドメイン次第で現役Fortranだってこの間新しい仕様出たし!ってつっかかられるぞ
08をちゃんと実装したコンパイラ出してから言ってくれよって気持ちだが
08をちゃんと実装したコンパイラ出してから言ってくれよって気持ちだが
878デフォルトの名無しさん
2019/03/28(木) 14:01:46.15ID:Csoqrb4z >>873
お前が言うな
お前が言うな
879デフォルトの名無しさん
2019/03/28(木) 14:03:11.91ID:CwLqpfbs _____(コボル)
答え COBOL
_____(フォートラン)
答え FORTRAN
これのどこが問題集やねん!
答え COBOL
_____(フォートラン)
答え FORTRAN
これのどこが問題集やねん!
880デフォルトの名無しさん
2019/03/28(木) 14:08:39.40ID:t1sztID7 来年度からこれが流通するぞ
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 空自機レーダー照射、音声データ公開 中国 ★2 [蚤の市★]
- 中国とロシアの爆撃機、日本周辺で共同飛行 [少考さん★]
- 「中国側も日本機のレーダーを感知していた」 中国メディアが報道 [♪♪♪★]
- 【YouTuber】バイク事故で入院のゆたぼん、振込で「お見舞金」募る [muffin★]
- 堀江貴文、キャッシュレス非対応の店にモヤッ 『PayPay』立ち上げの人物にまさかの直談判「現金決済しかできないんだけど…」 [冬月記者★]
- 高市早苗首相、消費税減税に後ろ向き 足かせはレジシステム? 「責任ある積極財政」期待高いが [蚤の市★]
- 防衛省、中国を完全論破www 「事前通告があったのは海自であって空自ではない」 高市早苗勝利 [175344491]
- 【悲惨】中国軍が自衛隊に「事前通告」し自衛隊も返答した音声が公開されてしまうwwwこれは高市チェックアウトゕ★4 [597533159]
- 【悲報】JA「全然米が売れなくて倉庫を圧迫してる。助けて!」米卸売り業者「安売りしたら赤字になる…助けて!」 [802034645]
- 韓国政府、高市早苗の「竹島領土」発言にブチギレwwwwwwwwwwwwwwww [834922174]
- 元統合幕僚長「演習通告の音声は公開されたが、レーダー照射時のものではない」高市政府「www」 [834922174]
- 【急募】佐藤健(37)さんが急にバカにされ始めた理由WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
