X



C++相談室 part137
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
垢版 |
2018/07/14(土) 17:53:02.14ID:FOAGvAbs
次スレを立てる時は本文の1行目に以下を追加して下さい。
!extend:on:vvvvv:1000:512

C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。

前スレ
C++相談室 part135
https://mevius.5ch.net/test/read.cgi/tech/1522495206/

このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.102【環境依存OK】
http://mevius.5ch.net/test/read.cgi/tech/1509780815/

■長いソースを貼るときはここへ。■
 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
0002デフォルトの名無しさん
垢版 |
2018/07/14(土) 17:55:20.65ID:FOAGvAbs
スレ作ってみましたが、これ設定間違ってますか?
ワッチョイほにゃららが出てきてない。
0003デフォルトの名無しさん
垢版 |
2018/07/14(土) 18:42:45.47ID:p9pW3bxe
>>1
スレの立て方は一番上に書いてある。
前スレや関連スレへのリンクも間違ってるぞ。
0007デフォルトの名無しさん
垢版 |
2018/07/14(土) 21:34:02.24ID:xV7EJA5w
前スレの 1N2GRIlb0
ディスクキャッシュに入ってるってずいぶん前からわかってたのに
何でムダな作業をやらせたの?
0008デフォルトの名無しさん
垢版 |
2018/07/14(土) 21:38:31.07ID:1N2GRIlb
このスレの知恵遅れたちが
どんだけ頭悪いのかよおく分かっただろ

同じ計算機で2秒で終わるような読みこみ処理で
数十秒かかるとかいってたワケだからな

相当オツムが弱い
このスレは知恵遅れしかいない
0009デフォルトの名無しさん
垢版 |
2018/07/14(土) 21:41:09.27ID:1N2GRIlb
いまになって
分かってたとかいいだしてるしな

ディスク読む時間に知ったかぶって調子こいてた知恵遅れは
どこいったの?
0011デフォルトの名無しさん
垢版 |
2018/07/14(土) 21:43:13.23ID:1N2GRIlb
嘘コケ
ハゲ

知恵遅れは前のスレ読んで出直してこいや
0012デフォルトの名無しさん
垢版 |
2018/07/14(土) 21:45:09.81ID:1N2GRIlb
ハードディスクの内側読みこんで読みこみ時間がどうとかいってた
バカいる?
0015デフォルトの名無しさん
垢版 |
2018/07/14(土) 21:46:29.73ID:1N2GRIlb
むしろなバカが指南した方法やコードでは
キャッシュのっかても数十秒かかってたってことだぞ
0016デフォルトの名無しさん
垢版 |
2018/07/14(土) 21:48:09.38ID:1N2GRIlb
このスレで教えを乞うてるヤツは
何度もデバッグで走らせてるハズのに
知恵遅れの方法やコード数十秒かかるってことだ

オレのは2秒かからない
知恵遅れは息してる?
0017デフォルトの名無しさん
垢版 |
2018/07/14(土) 21:48:37.29ID:xV7EJA5w
測定した結果は
fgetsの17秒とreadの1〜2秒しか無い

普通に読むだけで数十秒なんて測定結果は無い
0018デフォルトの名無しさん
垢版 |
2018/07/14(土) 21:49:17.53ID:1N2GRIlb
読み方次第で差は歴然と出る
オレの方法は最適な方法だからな
0020デフォルトの名無しさん
垢版 |
2018/07/14(土) 21:50:39.19ID:1N2GRIlb
やっぱり知恵遅れはなにも分かってないわ
まず自分が呼んでる関数がどんな動作してるか分かってないからな
0022デフォルトの名無しさん
垢版 |
2018/07/14(土) 21:51:37.65ID:1N2GRIlb
やっぱりこのスレは
相当な知恵遅れしかいない
CもC++も何も分かってない

それ以前の問題
0023デフォルトの名無しさん
垢版 |
2018/07/14(土) 21:53:57.67ID:1N2GRIlb
測定結果ででてるからな
相当な速度で速く読みこみたいのに標準関数のファイルポインタ使う知恵遅れなんか
まずいない

ファイルポインタ使う標準関数は
このスレにいる知恵遅れにでも簡単に使えるように
openやread使って使いやすく作ってあるだけだからな
0024デフォルトの名無しさん
垢版 |
2018/07/14(土) 21:54:36.27ID:xV7EJA5w
fgetsが速いとか言ってたアホが
readとfreadの差を強調する

オーバーヘッドのオーダーは1
読み込みバッファが常識的なサイズであれば無視できる
fgetsのオーバーヘッドのオーダーはn
バッファサイズによらずオーバーヘッドは無視できない
0025デフォルトの名無しさん
垢版 |
2018/07/14(土) 21:55:42.62ID:1N2GRIlb
まずfreadもバッファもってるのすら分かってないからな
0026デフォルトの名無しさん
垢版 |
2018/07/14(土) 21:56:36.36ID:xV7EJA5w
freadで測定させれば証明出来るが

で、
もともと測りたかったディスクアクセスの時間は?
まさかキャッシュに入った状態が普通と考えてるわけではあるまい
0027デフォルトの名無しさん
垢版 |
2018/07/14(土) 21:56:51.40ID:1N2GRIlb
ファイルポインタがもってるバッファから
いちいちこっちのバッファにコピーしてんのに

まずその程度のことすら分かってない
0028デフォルトの名無しさん
垢版 |
2018/07/14(土) 21:57:27.49ID:1N2GRIlb
相当頭が悪いのが
知ったかぶってるのは分かる
0029デフォルトの名無しさん
垢版 |
2018/07/14(土) 21:58:58.41ID:xV7EJA5w
測って見ればわかるって

で肝心の解析コードはどうした?
糞遅いコードを自信満々にあげてたけど
0030デフォルトの名無しさん
垢版 |
2018/07/14(土) 22:00:01.80ID:1N2GRIlb
クソ遅い?
オレのコードを動かして速度測定したの?

オレより10倍以上低速に作る才能がある知恵遅れのくせに
0031デフォルトの名無しさん
垢版 |
2018/07/14(土) 22:03:31.04ID:xV7EJA5w
糞遅い
間違い無い

お前の環境で15GBのテキストを作って解析時間を測ってみな
0032デフォルトの名無しさん
垢版 |
2018/07/14(土) 22:10:21.76ID:1N2GRIlb
とりあえず
知恵遅れはほっといて

テストデータをジェネレートするコードを
前スレの内容読んでテキトーに作った

 https://ideone.com/cPZvWL

baka_genでコンパイルすれば大量のテストデータを作ってくれる優れものだ
※ 指定ギガバイト数越えたら、1つのセクション書ききったら停止する

 使い方
  Usage:baka_gen <fileparh> <GB size>

出力されてる形式に問題がないかみといてくれ
形式が分からないと解析処理を作りようがない

明日からこのテストデータを解析する処理を作る
0033デフォルトの名無しさん
垢版 |
2018/07/14(土) 22:11:40.89ID:1N2GRIlb
まず知恵億れはなにと比較して遅いとか書かないからな
オレは知恵遅れが書いたコードより少なくとも10倍以上速い処理を書いてる
0034 ◆QZaw55cn4c
垢版 |
2018/07/14(土) 22:17:02.80ID:CBXc6tpD
>>32
なんか error がいっぱい出ているようだが…
0036デフォルトの名無しさん
垢版 |
2018/07/14(土) 22:17:46.97ID:1N2GRIlb
なんのエラー書けよ
エラーとかいわれても分かるワケがないだろ

ヴォケ
0037デフォルトの名無しさん
垢版 |
2018/07/14(土) 22:18:22.90ID:1N2GRIlb
で、そのコードはったのかオマエは
0038デフォルトの名無しさん
垢版 |
2018/07/14(土) 22:19:29.69ID:xV7EJA5w
>>33
fgets 17秒
これは俺じゃない

キャッシュに入ったデータの読み込み時間

ディスクからの読み込み時間
とを比べて10倍とか言ってるの?
0040デフォルトの名無しさん
垢版 |
2018/07/14(土) 22:20:14.44ID:1N2GRIlb
8.6秒とかテキトーなことなら
なんとでもいえるからな

どんなファイル読んで
どんなソース作ったわけ?

ファイル形式ちゃんとわかってんの
0041デフォルトの名無しさん
垢版 |
2018/07/14(土) 22:22:08.48ID:1N2GRIlb
適切なインクルードファイルを上に書けば
間違いなく通る

ココで教えを乞うているバカですら
それぐらいのことやってる

オマエはそれ未満だ
0042デフォルトの名無しさん
垢版 |
2018/07/14(土) 22:26:38.36ID:xV7EJA5w
テキストのほとんどが数値の行
10%の割合でx, yの行
セクションは全部で100個くらい

数値は乱数で作成した
実際の分布を考えて、
桁数によって出現率を変えてある

異常データでも不正アクセスしない

文字コードはS-JIS
改行はLFのみ
0043 ◆QZaw55cn4c
垢版 |
2018/07/14(土) 22:27:16.82ID:CBXc6tpD
>>41
「unknown type name ‘size_t’」がインクルードファイルで直る問題なのか?
ideone に怒られないコードが書けないのか?
0044デフォルトの名無しさん
垢版 |
2018/07/14(土) 22:29:41.45ID:xV7EJA5w
数値は符号付き32bitに収まる値で
printf("%d", n);
で出力される文字列と同じ書式
0045デフォルトの名無しさん
垢版 |
2018/07/14(土) 22:31:59.85ID:1N2GRIlb
https://ideone.com/hi8bYd

ヘッダファイルを適切にインクルードしたら
普通にエラーメッセージ消えたぞ

バカはなにをいってるのか意味が分からないワケ
0046デフォルトの名無しさん
垢版 |
2018/07/14(土) 22:33:55.81ID:1N2GRIlb
なんか知恵遅れがバカみたいなレスをブツブツ書いてるし
ごちゃごちゃいってないでコードあげたらどうだ
0047デフォルトの名無しさん
垢版 |
2018/07/14(土) 22:35:19.66ID:xV7EJA5w
シングルスレッド、順番に全文字スキャンの処理で
処理時間は1文字平均約2クロック (Haswell)

最適化的にはこれが出発点
さらに高速化する価値がある処理であれば
マルチスレッド,GPU, AVX ...
まだまだ高速化の余地はある
0048デフォルトの名無しさん
垢版 |
2018/07/14(土) 22:36:12.81ID:1N2GRIlb
また知恵遅れがテキトーなこといってるしな
0049デフォルトの名無しさん
垢版 |
2018/07/14(土) 23:49:17.06ID:5xFWH4XP
残念ながらクソシンタックスが増えれば増えるほどアホでもテクニカルターム使って
アホと思われない活動が可能になって行くんだよ。
0050デフォルトの名無しさん
垢版 |
2018/07/15(日) 00:49:14.70ID:p2p9fdhp
>>32,45
サンプルデータ作成コードありがとうございます。
実行してみましたが面白いですねこれ。
完成したら数十ギガのデータ作って遊んでみたい。
サンプルデータができて説明しやすくなったので色々補足させていただきます。
ちょっと細かい内容になるので、今あるサンプルデータ作成コードを
使用されても問題ありません。

文字コードはutf8 or euc-jpの両方を想定しています。

ファイルの1行目に下記行が一度だけ出てきます。
// タイトル、倍率(mag)。(この係数を使ってCの数値から割る、正の整数。unsigned int)
::fprintf(fp, "%s %d\x0a", "TITLE_NAME", 2000);

具体的には ttps://ideone.com/hi8bYd の64行目に上記が入ります。


Aのセクション集計値は個数が0のときがある。その時はテキスト行だけで終わり。
0 0 1 Jul〜
TEXT TEXT TEXT TEXT

Bのテキスト行は日本語(2byte)が来ることがある。

>つづく
0051デフォルトの名無しさん
垢版 |
2018/07/15(日) 00:54:03.20ID:p2p9fdhp
QQ行の説明
QQ subname -1 0 0 1 -21000000 600000 2
→この行が無いファイルもある。
→7,8カラムは1行目の倍率数字で割る(数値行と同じ計算)
→3〜6カラムは -1, 0, 1, のいずれか。この4つの組み合わせであとで計算に使うことがある。
1 0 0 1 →TYPE_A
0 1 -1 0 →TYPE_B
-1 0 0 -1 →TYPE_C
0 -1 1 0 →TYPE_D
-1 0 0 1 →TYPE_E
0 -1 -1 0 →TYPE_F
1 0 0 -1 →TYPE_G
0 1 1 0 →TYPE_H
→9カラム目は正の整数。(unsigned int)
→下記6つのバリエーションがあります。
QQ subname
QQ subname c
QQ subname -1 0 0 1 -21000000 600000
QQ subname -1 0 0 1 -21000000 600000 2
QQ subname c -1 0 0 1 -21000000 600000
QQ subname c -1 0 0 1 -21000000 600000 2
※cはcという文字列固定
※1つのファイルに存在するのはいずれか1つのフォーマット

そして少し複雑なのが、上記QQ行は先頭のQQがなくなってx, y行に存在することがあります。
1つのファイル内でQQ行とx, yの後ろにくるパターンの両方は存在せず、片方が出てきたらもう片方は出てきません。
x, yと同じ行にくる場合のフォーマットもQQ行の規則と同じです。
x 1 234 subname -1 0 0 1 -21000000 600000 2
y 2 234 subname -1 0 0 1 -21000000 600000 2

>つづく
0052デフォルトの名無しさん
垢版 |
2018/07/15(日) 00:58:25.78ID:p2p9fdhp
最後にRR行があります。
これもQQ同様x, yの次の行にあったりなかったりします。
QQとRRが一緒に出てくることは無いと思います。
フォーマットは「RR 正の整数」でQQのようにx,yの後ろに来ることはありません。
x 1 2
RR 3
11 11 11 11
11 11 11 11

↓QQ、RRが一緒に出てくることは無い。
x 1 2
QQ subname c -1 0 0 1 -21000000 600000
RR 3

↓これも無い
x 1 2 RR 3

>つづく
0053デフォルトの名無しさん
垢版 |
2018/07/15(日) 01:02:10.59ID:p2p9fdhp
参考として、ファイルを読み込んだら下記のt_all_dbのような構造体にすべて保管しようと考えています。
型や名前は最適なものに変更されて問題ありませんし、他に最適な
格納方法があればそれでも問題ありません。
typedef struct __tag_rr_db {
 unsigned int rr_num;
} t_rr_db;
typedef struct __tag_qq_db {
 char qq_name; //subname
 bool is_c; //cがあるかないか
 QQ_TYPE qq_type;
 float numbers; // 2つの数字のリスト(vector?)
 unsigned int count; //最後尾の数字
} t_qq_db;
typedef struct __tag_elem_db {
 ELEM_TYPE elem_type; // x or y
 unsigned int no; // x or yの番号
 unsigned int num_line_count;
 t_qq_db qq_db;
 t_rr_db rr_db;
 numbers; //数値行のリスト(vector?)
} t_elem_db;
typedef struct __tag_section_db {
 unsigned char name;
 unsigned int num_1;
 unsigned int num_2;
 unsigned int text_line_count;
 texts; //テキスト行(vector?)
 t_elem_db elem_dbs; //elem_dbのリスト
} t_section_db;
typedef struct __tag_all_db {
 title_name; mag; section_dbs; //section_dbのリスト
} t_all_db;
0054デフォルトの名無しさん
垢版 |
2018/07/15(日) 01:59:33.70ID:lbsq5rUe
そろそろ「ぼくちんのログ解析ソフトを名無しどもに作らせるスレ」でも立ててそっちでやってくれないか
0055デフォルトの名無しさん
垢版 |
2018/07/15(日) 02:07:19.29ID:eimWnm2X
いい加減にしろよお前
土方コーダに発注する気分でてめえのクソログの仕様ドヤ顔で書いてんじゃねえよ
ありったけスレ私物化して相談しまくったんだからそろそろ自分の手と頭を動かしたらどうだ
0057デフォルトの名無しさん
垢版 |
2018/07/15(日) 04:38:00.97ID:deogSIs/
ume進行だと思えば悪くない
続けて
ていうか徹底的にやれ

ていうかディスクキャッシュのサイズと読込サイズの理想的な関係は微妙なもんじゃわ;
HDD周りのキャッシュには次の3階層ある
(1) 1トラック内のランダムアクセスではHDDだと平均的に1/2回転分の時間待たされるから、
  HDD側であらかじめ1トラック分はキャッシュする
(2) シークでは今日日のCPUの速度からみて地質年代レヴェルの遅延が生じるから、
  OSにとって都合の良いサイズ(ページサイズとか)を単位とする単位でキャッシュされる
(3) で、その上に標準入出力のバッファがある(setvbuf()で調整できるのはこれ
SSDだと(1)が書き換え回数最適化絡みのキャッシュに置き換わるが、(2)や(3)は同じ

高速化には(3)のバッファリングやアプリ側の処理というものと、(2)と(1)のキャッシングをいかに並行動作させるかがキモすぐる

fgets()とfread()の速度差は、単一ファイルをシーケンシャルアクセスするときは言うほど開きはない(上のしくみから導ける
一方、複数ファイルを交互にアクセスしたりHDDのまちまちな場所をランダムアクセスしだすとたちまち顕在化する(これも上のしくみから導ける
単一ファイルの読込であっても、アプリがファイルの一部を読み込んで考え込む、の繰り返しなパターンならば
アプリ側のマルチスレッド化が有効な「こともある」 今回は該当しないと思うが、、
0058デフォルトの名無しさん
垢版 |
2018/07/15(日) 05:01:06.13ID:EFpmUWpC
てな議論はベアメタルでやるならともかく
依存処理系では特定OSの話になるし
抽象化されたハードウエアじゃ特性を仮定すること自体ナンセンス
0059デフォルトの名無しさん
垢版 |
2018/07/15(日) 06:33:31.92ID:F1eG7opL
>>57
申し訳ありませんが、C++と関係がない話は、他のスレでやってください。よろしくお願いします。
お気を悪くなされませんよう。
0060デフォルトの名無しさん
垢版 |
2018/07/15(日) 11:31:30.36ID:Y0/Ay92k
unsigned int l = -1;
cout << l << endl;
cout << (signed int)l << endl;



4294967295
-1


int m = 4294967295;
cout << m << endl;
unsigned int n = 4294967295;
cout << n << endl;



-1
4294967295
0061デフォルトの名無しさん
垢版 |
2018/07/15(日) 11:32:24.73ID:Y0/Ay92k
>>60

unsigned int l = -1;
int m = 4294967295;

がエラーにならないのはなぜでしょうか?
0062デフォルトの名無しさん
垢版 |
2018/07/15(日) 11:45:15.02ID:Y0/Ay92k
http://codepad.org/4odTQaly

↑は、ロベールの本に載っているコードです。

friend class ValueFactory;
//friend Value* ValueFactory::New(int n) const;

↑これを

friend class ValueFactory;
//friend Value* ValueFactory::New(int n) const;

と変更するとなぜコンパイルエラーになってしまうのでしょうか?

ロベールの本には、「不完全型」というのを利用する必要があると書いてあります。

friend class ValueFactory;

↑これはなぜ「不完全型」を使わなくてもOKなのでしょうか?
0063デフォルトの名無しさん
垢版 |
2018/07/15(日) 11:51:25.65ID:kDEFN2k+
解釈が間違ってる
ValueFactoryの実体を作って返すためにはすでに定義が分かってないといけない(完全型でないといけない
対してfriend宣言は名前だけ分かってればいい(定義がまだ無い(=不完全型)でいい

というだけの話
0064はちみつ餃子 ◆8X2XSCHEME
垢版 |
2018/07/15(日) 11:59:00.99ID:HERu1+Fl
>>61
暗黙のキャストのせい。

整数リテラルに型を表す接尾辞がつかない場合は原則として int として解釈されるけど、
int の範囲より大きい場合はそれを表せる最低限の整数型として解釈されるんだったはず。

整数型の初期化 (代入) の右辺に現れた値が左辺の型で表せるときはそのままの値であることが保証されるが、
そうでないときは一定の規則に従って縮小される。

縮小の仕方は、
左辺が unsigned のときは、左辺の型が表せる最大値に 1 足した数で右辺の modulo を取った値が左辺に入る。
左辺が signed のときは未定義。
なので、 (int が 32 ビットの大きさをもつとき) unsigned int l = -1; が 4294967295 になるのは規格通りだが、
int m = 4294967295; が -1 になるのは保証されない。

規格を確認せずに記憶で書いてるので、
もし間違ってたら誰か指摘よろー。
0065デフォルトの名無しさん
垢版 |
2018/07/15(日) 12:01:48.69ID:WB6myqsz
c++で文字列のバイナリ読み書きで質問があります

vector<string> moji = {"aaaaaa", "bbbbbb", "ccccccccc"};
ofstream ofs2("mojibin.bin", std::ios_base::out | std::ios_base::binary);
for (int i = 0; i <= 2; i++) {
ofs2.write(moji[i].c_str(), strlen(moji[i].c_str()));
}

書き込みは、エラー無くできるのですが
ifstream ifs2("mojibin.bin", std::ios_base::out | std::ios_base::binary);
for (int i = 0; i <= 2; i++) {
ifs2.read((char*)&moji[i], strlen(moji[i].c_str()));
cout << "(" << i << ")" << moji[i] << " ";
}

読み込みは、読み込んで表示も出ますが
何かエラーが出ます
どうしてでしょうか
0067デフォルトの名無しさん
垢版 |
2018/07/15(日) 12:11:00.69ID:Y0/Ay92k
>>63

ありがとうございます。

ソースコード全体をコンパイラがみれば定義も分かるのに、なぜコンパイルエラーにするのでしょうか?

>>64

ありがとうございました。
0069デフォルトの名無しさん
垢版 |
2018/07/15(日) 12:15:07.36ID:Y0/Ay92k
コンパイラーについての知識がないと理解しにくい部分でしょうか?
0070デフォルトの名無しさん
垢版 |
2018/07/15(日) 12:15:22.56ID:WB6myqsz
>>66
なにか、ヌル文字を読み込もうとしてるエラーのようで
なるほど、区切り文字というのを入れて
getlineとかを使用して読み込んでいくべきなのかな・・・・
0071デフォルトの名無しさん
垢版 |
2018/07/15(日) 12:50:13.08ID:WB6myqsz
とりあえず、区切り入れてgetlineで一行ずつ読み込めました
vector<string> moji = {"aaaaaa", "bbbbbb", "ccccccccc"};
ofstream ofs2("mojibin.bin", std::ios_base::out | std::ios_base::binary);
for (int i = 0; i <= 2; i++) {
moji[i] += "\n";
ofs2.write(moji[i].c_str(), strlen(moji[i].c_str()));
}

ifstream ifs2("mojibin.bin", std::ios_base::out | std::ios_base::binary);
string temp;
int i = 0;
while (getline(ifs2, temp, '\n')) {
cout << "(" << i << ")" << temp << " ";
i++;
}
これでまたvector<string>に入れたらいいか
c++はHSPとかと違って難しいですね
0072デフォルトの名無しさん
垢版 |
2018/07/15(日) 13:00:44.43ID:oGr67yTf
>>70
&moji[i]はstringインスタンスの格納先アドレスであって、中に格納されている文字列データの先頭ではないよ。
無理やりやるなら
ifs2.read(const_cast<char*>(&moji[i].data()), moji[i].length());
とかすれば動くと思うけど

>>71
文字列以外も書き込みだしたら\nと競合するけどいいの?
getline使うならbinaryモードは使うべきでないと思うし、そもそも文字列しか書き込まないならbinayモードにする必要ある?
0073デフォルトの名無しさん
垢版 |
2018/07/15(日) 13:02:49.96ID:oGr67yTf
あとエラー出力は正確に書いてくれないと、コード全部読まないといけないからしんどいです…
0074デフォルトの名無しさん
垢版 |
2018/07/15(日) 13:18:02.66ID:lbsq5rUe
>>67
C++はそういうコンパイルの仕方しないから
cppごとにオブジェクトファイル(クラスのインスタンスとしてのオブジェクトとかとは別の意味)というのを作ってから
オブジェクトファイル同士のリンクという作業をして目的の実行バイナリを作る
オブジェクトファイルは自分自身で完結してないといけないので、
「ValueFactoryとかいうクラスのポインタ」「ValueFactoryとかいうクラスがfriendだという情報」は持つことが出来るけど
(別のファイルがValueFactoryの実体を持ってると期待して)
ValueFactoryの実体作れとか実体使ってなんかやれ(そういう実行コードを保持しろ)と言われたら困ってしまうってこと
0075デフォルトの名無しさん
垢版 |
2018/07/15(日) 13:19:42.19ID:WB6myqsz
>>72
数字の配列はバイナリでエラー無いので
やはり、文字列はテキストに出力したほうがいいんかな
>>73
今度からはそうします
すみませんでした
0077デフォルトの名無しさん
垢版 |
2018/07/15(日) 14:56:48.40ID:p2p9fdhp
大規模ファイルの読み込みについて相談しているものです。

以下調査結果です。
ファイルは上記で13GBのファイル生成したものを使用
https://ideone.com/hi8bYd

@下記コードの結果
https://ideone.com/e9iA5m
512,15 →15秒
1024,7 →7秒
2048,5 →5秒
4096,3 →3秒
8192,2 →2秒

>つづく
0078デフォルトの名無しさん
垢版 |
2018/07/15(日) 14:58:34.48ID:p2p9fdhp
A作成した下記コードでテスト。 →約2秒
https://ideone.com/1YhaLR
(整理できておらず、かなりぐちゃぐちゃなコードですが。。)

内容:freadのみ

B上記Aで、「#define READ_MODE 1」で実行 →約25秒
内容:改行単位にするため、前スレ962の下記Cを対応したつもりのもの

A. 1行全体が連続してバッファに存在しなくてもいい作りにする
B. リングバッファ
C. fseekでファイルポインタを戻してから読み込む
D. あまりをmemcpyでバッファの先頭にコピーしてから読み込む
E. ほか

C上記Aで、「#define READ_MODE 2」で実行 →約60秒
内容:上記B+解析

Dfgetsのみ →約15秒
if((fp=fopen(file_path, "r"))==NULL){
 printf("ファイルを開けません。%s",file_path);
 return 0;
}
char tdata[10000];
char* data = tdata;
while( fgets(data,10000,fp) != NULL ){
 data;
}

上記Aが約2秒なのにBの改行単位のケアで25秒に増加しているので、
まずここの作りがおかしいんだろうなとは思いますが、
何がおかしいのかが、まだわかっていません。
0079デフォルトの名無しさん
垢版 |
2018/07/15(日) 16:27:56.77ID:Y0/Ay92k
>>74

ありがとうございました。
0080デフォルトの名無しさん
垢版 |
2018/07/15(日) 17:27:08.76ID:1ys/w/8R
fseekをつかうのなんか絶対ダメだ

fseekされることで標準関数がFILEポインタでもってるバッファも
めんどいことになってるのが容易に想像がつく
そしてさらにlseekもシステムコールも呼ばれる

標準関数の実装のされかたにもよるが
大きな性能劣化は避けられない

Dの方法でひたすら シ リ ア ル に読まないと遅くなるのは当然
そんな標準関数でやってるようなことを、
こっち側でやるならそもそも標準関数使う意味がない

普通にopen、readでこっちが渡したメモリにそのまま読みこむほうがいい
まずFILEポインタ使ってfreadしか使わないなら、はっきりいってfread使うメリットは
まったくない

関係ないようで関係ある話だが
キャッシュがきいてない状態ではposix_fadviceを呼んでおくと
シ リ ア ル に大きなファイルを読み込むときには、計算機の状態によっては
劇的に改善することがある
0081デフォルトの名無しさん
垢版 |
2018/07/15(日) 17:36:56.10ID:1ys/w/8R
ちなみにファイルはUNIXでは
ブロックデバイスだからな

そのブロックデバイスをセクタ単位で
効率的に読み込むためにはどうすればいいか

あとはもう分かるな

このスレにいるサル並の知能しかないようなヤツラ以外なら
わかるハズだからな
0082デフォルトの名無しさん
垢版 |
2018/07/15(日) 18:02:19.58ID:1ys/w/8R
まずストレージというハードウェアが
OSでどうやって抽象化されてるか
わかってないからな

こんな頭悪いヤツラが抽象化とかなんとかいってるワケ
きっとな前スレのソースの注釈で書いたwindowsで、キャッシュなしでReadFile呼ぶ時は
セクタの倍数単位でないと使えないという意味も分かってない

ともかくこのスレに居ついてるヤツラは頭悪い
基本的なことが分かってないからな

まずなバカはこのスレで相談することが
バカな行為であることに気付かないといけない
バカななに聞いてもムダ
的外れなコタエしか返ってこない
0083デフォルトの名無しさん
垢版 |
2018/07/15(日) 18:16:38.79ID:F1eG7opL
>>80
> FILEポインタ使ってfreadしか使わないなら、はっきりいってfread使うメリットはまったくない

メリットはあるでしょ。システムコールのreadやReadFile()と違い、
FILE*を使ったfread()はアラインメントを無視した小さいバッファサイズで読み込んでも全体としての速度低下が起きにくい恩恵がある。
0084デフォルトの名無しさん
垢版 |
2018/07/15(日) 19:07:48.62ID:lbsq5rUe
13Gログ解析野郎と半角野郎が毎度毎度必ずコンビで出てくるのは何なんだろうなー
おっかしいなー

「ぼくちんのログ解析ソフトをぼくちんが考えた最強の名無しが作るスレ」でやってどうぞ
0085デフォルトの名無しさん
垢版 |
2018/07/15(日) 20:22:05.00ID:1ys/w/8R
低学歴で知能低いのが答えられる質問の範囲なんかたかがしれてる
知恵遅れでも回答できる質問に限定される

こういうヤツラはYahoo知恵遅れがお似合い
もうね2ちゃんねるのクオリティーも著しく低下したもんだわ

著しくレベルの低い質問なら回答できるワケだからな
情報として保存される価値すらない
ゴミ質問とゴミ回答
0086デフォルトの名無しさん
垢版 |
2018/07/15(日) 20:27:33.82ID:1ys/w/8R
昔ならググレカスでおわるような質問を
どやがおで低学歴知恵遅れが回答するスレがココだからな

低学歴知恵遅れが活躍できる場所はココしかない

オレのナワバリを荒らすなと低学歴知恵遅れが
主張している
0088デフォルトの名無しさん
垢版 |
2018/07/15(日) 22:46:04.59ID:GtfCPRC1
POSIXの制限に起因するパフォーマンス低下を回避するためのドライバをさっき見たばかりだな。
ハイパフォーマンスの世界にはそういうのもあるんだな。
0090デフォルトの名無しさん
垢版 |
2018/07/16(月) 01:21:00.28ID:6luw5g3K
とりあえずファイルすべての字句解析と
最低限のデータ取得できるとこまではできた
※ あとはデータを格納するだけ

テストデータのジェネレータを修正した
https://ideone.com/NWdMmL

で、とりあえず作ってみた解析のコードが↓コレ

https://ideone.com/E6QH2r

プリプロセッサにDEBUG_WRITEの定義を追加してやれば
データ取得できてることがダンプして確認できる

※ ダンプする場合は、ファイルにリダイレクトするにしても
※ 物凄い時間かかるし、物凄いディスク容量をとるから小さいテストデータでやるほうが
※ とりあえず無難

ものすごい単純なコードプロトタイプになってるから
バカでもチョンでも簡単に整理や作りかえができるようにはなってる

※ 処理内容はコードみたまんまのハズだ
※ 同じような処理がひたすら書かれてる
※ QQがなくなればめっちゃコード減るハズ
※ コードのほとんどはQQのムダ処理
0092デフォルトの名無しさん
垢版 |
2018/07/16(月) 10:44:37.38ID:526Z5Rhh
15GBのテキスト解析8.6秒のマシンで
>>90の時間を計ったら54秒でした。
ファイルアクセスの時間は除いた純粋な解析処理です。

これがプロとアマチュアの差ですか。
まあ54秒でも使えるレベルではあると思うんで
これで良いんじゃないですかね?
0093デフォルトの名無しさん
垢版 |
2018/07/16(月) 11:29:13.12ID:80hpbb9v
OS のAPI を、直接呼んではいけない。
例えば、1バイト読み込みを千回やれば、千回API が呼ばれる。
ユーザーモードからカーネルモードへの、コンテキストスイッチが千回

一方、バッファリングしている、C のライブラリを使えば、
千バイト1回の読み込みで済む

ライブラリが抽象化している。
buffering stream

ユーザー → (ライブラリ) → API
0094デフォルトの名無しさん
垢版 |
2018/07/16(月) 11:39:40.02ID:774eW9FT
>>90
今回相談しているものです。
ありがとうございます。

まず >>78 でAが2秒、Bが25秒の違いを調べました。

>>78 のBで実行するため昨日アップした https://ideone.com/1YhaLR に
「#define READ_MODE 1」を設定し25秒かかることを確認。
ここから後ろの処理からコメントアウトしていくと、下記行の前後で
25秒から2秒に変わりました。

88行目: data = real_data;

real_data(char型)のポインタをdata(char型のポインタ)に代入したつもりだったのですが、
もしかして実体がコピーされているのでしょうか?

>つづく
0095デフォルトの名無しさん
垢版 |
2018/07/16(月) 11:41:24.00ID:774eW9FT
続けて >>90 のコードを実行してみました。

データ生成の方は、>>51 の最後に説明している、
「1つのファイル内でQQ行とx, yの後ろにくるパターンの両方は存在せず、片方が出てきたらもう片方は出てきません。」
というところで、1つのファイルに両方のフォーマットが生成されていましたが、
両方が読めれていれば特に問題はないと思います。

読み込み用のコードは自分の環境では %"PRIu64" → %" PRIu64 " とスペースを開けないとなぜかエラーになりました。
あとargv[2]がよくわかりませんでしたが実行できたのでとりあえずそのままにしています。
以下結果

## 1GB
time ./a.out aaa_1gb
strat... ./a.out aaa_1gb (null)
done... ./a.out aaa_1gb (null)
4./a.out aaa_1gb 3.69s user 0.14s system 99% cpu 3.839 total

## 5GB
time ./a.out aaa_5gb
strat... ./a.out aaa_5gb (null)
done... ./a.out aaa_5gb (null)
18./a.out aaa_5gb 17.40s user 0.78s system 99% cpu 18.216 total

## 13GB
time ./a.out aaa_13gb
strat... ./a.out aaa_13gb (null)
done... ./a.out aaa_13gb (null)
47./a.out aaa_13gb 44.99s user 1.73s system 99% cpu 46.781 total

みなさんキャッシュの話をされていて、その辺がまだあまり理解できていないのですが、
文字列解析時にはキャッシュから取り出して参照するため時間は増えるということですかね。
0096デフォルトの名無しさん
垢版 |
2018/07/16(月) 11:50:33.56ID:774eW9FT
あと、freadだけで2秒のものに、freadの後にからなず fseek(fp, -10000, SEEK_CUR) を実行してみましたが、
処理時間は2秒で変わりはありませんでした。

これらのことから >>94 で書いている

88行目: data = real_data;

のせいで2秒から25秒に増加しているようです。
0097デフォルトの名無しさん
垢版 |
2018/07/16(月) 15:13:00.28ID:774eW9FT
>>90 のコードを >>95 と同じ環境で、readをfreadに変えて実行してみたところ下記になりました。
readとfreadで速度に変わりはなさそうです。

## 1GB(fread版)
./a.out aaa_1gb
strat... ./a.out aaa_1gb (null)
done... ./a.out aaa_1gb (null)
4

## 5GB(fread版)
./a.out aaa_5gb
strat... ./a.out aaa_5gb (null)
done... ./a.out aaa_5gb (null)
18

## 13GB(fread版)
./a.out aaa_13gb
strat... ./a.out aaa_13gb (null)
done... ./a.out aaa_13gb (null)
48
0098デフォルトの名無しさん
垢版 |
2018/07/16(月) 15:37:46.05ID:6luw5g3K
かわりがないとか
んなわけがないからな

先にいっておくが
ちなみにオレのコードより
おなじところまで解析できる処理を
速い速度で作れるヤツはまずいないからな

作れるもんなら作ってみればいいわ
0099デフォルトの名無しさん
垢版 |
2018/07/16(月) 15:40:29.53ID:6luw5g3K
ちなみにDEBUG_WRITEを定義に追加したら死ぬほど遅いからな
ちゃんとDEBUG_WRITEをとって計測してるのかすら怪しい

バカが書いたコードより間違いないなく速いハズだからな
0100デフォルトの名無しさん
垢版 |
2018/07/16(月) 15:48:01.58ID:80hpbb9v
同じデータで、2回テストしても、

1回目は、HDD からメモリへ読み込むけど、
2回目は、既にメモリ上にデータが存在するから、HDDから読み込まない。
メモリキャッシュから読むから、HDDの読み込み速度とは違う

だから、2回目のテストの前に、
メモリキャッシュをすべて破棄しておいてから、テストをしないといけない
0101デフォルトの名無しさん
垢版 |
2018/07/16(月) 15:49:56.51ID:6luw5g3K
コレで他のより遅いというなら
オレはもうバカの相談には二度とのらないし
コレ以上のコードは書かない

ほぼ限界まで速度が出るようにチューニングしてるハズだからな

評価のしかたが分かってない
0103デフォルトの名無しさん
垢版 |
2018/07/16(月) 15:51:33.68ID:6luw5g3K
だからコードあげろよ
0105デフォルトの名無しさん
垢版 |
2018/07/16(月) 15:52:15.93ID:6luw5g3K
シロウトは口だけだからな
クソニートのシロウトが口をはさむ余地なんかない
0106デフォルトの名無しさん
垢版 |
2018/07/16(月) 15:53:09.83ID:6luw5g3K
ザコはオマエだろ
クソニートのザコはコードあげずに
何秒とかいってるだけだからな
0109デフォルトの名無しさん
垢版 |
2018/07/16(月) 15:57:13.10ID:6luw5g3K
読み込み速度で問題
そしてポインタをひたすらインクリメントだけして
ひたすら最小限の参照するだけの処理より速い処理なんか
逆立ちしてもかけるワケがないからな
0110デフォルトの名無しさん
垢版 |
2018/07/16(月) 15:58:16.80ID:6luw5g3K
fgetsはシロウトが使っても概ね良好な結果が約束されてる
0112デフォルトの名無しさん
垢版 |
2018/07/16(月) 16:03:00.33ID:6luw5g3K
クソニートがいきがってるしな
オレが書いたコードを超える速度がでるコードを
まずあげてみろよ

話はそこからだからな
0113デフォルトの名無しさん
垢版 |
2018/07/16(月) 16:03:52.50ID:6luw5g3K
クソニートはテキトーなことばっかりいって
口だけだからな
0115デフォルトの名無しさん
垢版 |
2018/07/16(月) 16:04:43.29ID:6luw5g3K
だからクソニートはコードあげろよ
オレのコードにムダは一切ない
0117デフォルトの名無しさん
垢版 |
2018/07/16(月) 16:05:51.54ID:6luw5g3K
だからクソニートは口だけ8.6秒のコードをあげろよ
0119デフォルトの名無しさん
垢版 |
2018/07/16(月) 16:07:20.43ID:6luw5g3K
オマエはクソニートだからな
クソニートはコードの速度の心配をするまえに
自分の心配をしたほうがいい
0120デフォルトの名無しさん
垢版 |
2018/07/16(月) 16:22:48.03ID:6luw5g3K
https://ideone.com/e9iA5m
g++ -o baka_test $file_name
echo 512,`./baka_test $input 512` > baka_result.txt
echo 1024,`./baka_test $input 1024` >> baka_result.txt

上記を13GBのファイルで試したら下記結果が出ました。
512,13
1024,7
2048,5
4096,3
8192,2
16384,2
32768,2
65536,2
131072,1
262144,3
524288,2
1048576,2
2097152,2
4194304,2
8388608,2
16777216,3
33554432,2
67108864,3
134217728,3
268435456,3
536870912,3
1073741824,3

バカが試験してシステムコール呼びだしのオーバヘッドの評価なんかすでに評価済
(システムコール呼びだしのオーバヘッドの評価なんか、バッファサイズを変更による推移をみれば簡単に評価できる)
0122デフォルトの名無しさん
垢版 |
2018/07/16(月) 16:30:26.25ID:6luw5g3K
また低学歴知恵遅れのクソニートがテキトーなこといってるからな

キャッシュにのってるなら
オレのエレガントなコードを除いたすべてのクソコードも同じキャッシュがのった条件で
試験されてるわ
0123デフォルトの名無しさん
垢版 |
2018/07/16(月) 16:31:48.69ID:6luw5g3K
低学歴知恵遅れのクソニートってテキトーなこといって
なんかいった気になる

社会参加しないクソニートが2ちゃんねるで政治の話をするのと似てる
0125デフォルトの名無しさん
垢版 |
2018/07/16(月) 16:33:40.35ID:fNWu8+xr
1秒〜2秒なんてどうでもいい

キャッシュに無い時の読み込み時間
解析時間

これをどうにかしろよ

意味の無い所に時間をかける典型的なアホ
0127デフォルトの名無しさん
垢版 |
2018/07/16(月) 16:44:07.58ID:774eW9FT
今 >>90 の解析コード見てますがseekを使わずreadで連続して読み込むところがとても参考になります。
こうやって読み込むんですね。
0129デフォルトの名無しさん
垢版 |
2018/07/16(月) 18:00:25.42ID:6luw5g3K
オマエはまずオレのエレガントなコードを参考するまえにな
この愚かなコードをどうにかしたほうがいい

unsigned char real_data[BUF_SIZE+1];
size = fread( &real_data, sizeof(real_data[0]), BUF_SIZE, fp);
data = real_data;

遅いどころかそもそもちゃんと動作すらするワケがない
マジでな、オマエは今までなにをやってたわけ?

小一時間問い詰めたいわ

はっきりいうわ
オマエ、才能ない
0130デフォルトの名無しさん
垢版 |
2018/07/16(月) 18:05:36.68ID:6luw5g3K
オレが引用したオマエのコードが
なんでお話にならないくらいダメなのか
理由が分からないならオマエはCをさわらないほうがいい

コレはいいきれる

速く動作させたいとか以前の問題だからな
0131デフォルトの名無しさん
垢版 |
2018/07/16(月) 18:29:34.88ID:fNWu8+xr
エレガントなコードwww
糞汚くて激遅なコード

お前は偉そうに語れるレベルじゃない
0134デフォルトの名無しさん
垢版 |
2018/07/16(月) 18:58:39.51ID:6luw5g3K
ごちゃごちゃいってないでな
クソニートはオレより速くできるコードをあげたらどうだ

クソニートが邪魔でしょうがない
0136デフォルトの名無しさん
垢版 |
2018/07/16(月) 19:02:42.71ID:6luw5g3K
どうでもいいが
クソニートは邪魔しかしないからな

オレのエレガントなコードに嫉妬してるワケ

まちがいなくオレのコードより速いコードなんかかけるワケがないからな
0137デフォルトの名無しさん
垢版 |
2018/07/16(月) 19:04:00.40ID:6luw5g3K
クソニートはこうやって社会と接点ももったつもりになってるワケ
分かりやすい

ニューススレなんかに湧いてくる社会参加してないクソニートとそっくりといっていい
0138デフォルトの名無しさん
垢版 |
2018/07/16(月) 19:05:41.08ID:6luw5g3K
ココは相談スレだからな
まちがいなくクソニートは相談スレの邪魔をしてる
0140デフォルトの名無しさん
垢版 |
2018/07/16(月) 19:13:02.52ID:6luw5g3K
もうね図星つかれて
顔真っ赤だからな

ホントな分かりやすいわ

分かってしまうのが怖いわ
0141デフォルトの名無しさん
垢版 |
2018/07/16(月) 19:15:40.86ID:6luw5g3K
だいたい分かる
登校拒否児のまま高齢ニートになったようなのが
このスレにはウジャウジャいる

低学歴なまま精神的に大人になってないような知恵遅れの典型的なレスパターンだからな
いわゆるヒキコモリというヤツだ
0143デフォルトの名無しさん
垢版 |
2018/07/16(月) 19:29:45.75ID:6luw5g3K
クソニートは相談スレに参加できるレベルに達してないからな
いままで参加できてると錯覚してたワケ

参加できないからIDが赤くなるまでレスもできない
ホンモノのプロフェッショナルなオレがくればこうなる
知恵遅れがオレスゲーできない

唯一の自分が社会と接点をもててると錯覚してる唯一の場所が
オレに乗っ取られたワケ

くやしいの?
0144デフォルトの名無しさん
垢版 |
2018/07/16(月) 19:32:29.15ID:r07bWXyg
ホンモノのプロフェッショナルなオレ
ホンモノのプロフェッショナルなオレ
ホンモノのプロフェッショナルなオレ
ホンモノのプロフェッショナルなオレ
ホンモノのプロフェッショナルなオレ 👀
Rock54: Caution(BBR-MD5:1341adc37120578f18dba9451e6c8c3b)
0145デフォルトの名無しさん
垢版 |
2018/07/16(月) 22:04:34.63ID:KaFNK61g
最近バーチャルYouTuberは4,000人を越えています。
そこで今どのVtuberが人気なのか調べてみようと思います。

第二回バーチャルYouTuber人気投票ですが、Vtuber界隈の変化が激しい為、投票受付期間中であれば、
一度投票した内容を変更できるようにしました。

今回は一人三票です。今回からモンスト、鈴木ヒナ、ポン子、アイドル部など強力な新人さんも入っておりますので、
投票をよろしくお願いいたします。

現在830票
あなたの好きなVtuberは?
https://goo.gl/forms/wHUyA3Phxj6y2nu73

・2018/6/5時点でチャンネル登録数10,000人以上のVtuberを対象としています。
・一つのチャンネルでVtuberが複数人いる場合は、それぞれ分けています。
・一人三票です。
・このグーグルフォームに投票するにはグーグルアカウントでログインする必要があります。
・並び順は前回の得票数の高い順と新人は登録者数の多い順に並んでいます。
・今回も1,000人の方が投票するまで継続します。
・受付期間中は何度でも投票内容を変更できます。

第一回バーチャルYouTuber人気投票結果(2018年5月7日〜5月30日、全投票数1,000票)(スプレッドシート)
https://docs.google.com/spreadsheets/d/e/2PACX-1vTpmFxf3MHjezIdvmte2CD6kWk4so-gtI8a9XJVjS_O0aMZhekYnSCj-n4DCLfHGXhke7HZYbJM1TEa/pubhtml?gid=0&;single=true
0146デフォルトの名無しさん
垢版 |
2018/07/16(月) 22:56:02.09ID:6luw5g3K
とりあえず、バカでも使えて修正できる
パーザーのクラスのサンプルでも気が向いたら作っといてやるわ

こんなもんデータを全部格納できるワケがないからな

今の解析コードのサンプルでも位置とサイズの情報はガッチリとってるから
いくらでも改良できる
オレみたいなプロフェッショナルになると、こんなことハナから予見できてるワケ
0147デフォルトの名無しさん
垢版 |
2018/07/16(月) 23:55:04.74ID:k7Gq2lBS
>>94-97
「ぼくちんのログ解析ソフトを半角さんが作ってくれるスレ」を立ててそっちでやってくれないか
0150デフォルトの名無しさん
垢版 |
2018/07/17(火) 14:06:01.71ID:I4a/6mEU
>>146
今のサーバはメモリに多少余裕があるから全部メモリに格納しようと
思ってましたが、よく考えると数人同時に使ったり他の低スペックサーバを
使うことを想定すると確かに名称、テキスト、数値の番号と位置など
最低限の情報だけ拾ってその都度ファイルにアクセスした方が
他の人に迷惑がかからず良さそうです。

気が向いたらよろしくお願いします。
自分でも検討してみます。

>>147
相談しっぱなしは悪いと思い、色々調べた結果を出してしまいました、すみません。
0153デフォルトの名無しさん
垢版 |
2018/07/18(水) 18:38:21.90ID:zAL/THKp
ハイ、謝罪と賠償の要求いただきました!
みんなー、謝罪と賠償の要求出たぞー!
0157デフォルトの名無しさん
垢版 |
2018/07/18(水) 22:02:52.32ID:L914sbje
int a;
if( hoge ){
const a = 1;
}
else{
const a = 2;
}

とすると不安定な動きをするのですが、
このコードは許されないのでしょうか。
0159デフォルトの名無しさん
垢版 |
2018/07/18(水) 22:28:45.28ID:4KYHyXSz
const a = 1; ってなんぞ??と一瞬思ったがintが省略されてるのか
それブロック内ローカル変数だから、外のint a;には関係しないよ
>157に書かれてるところは許されるけど、
書かれてないところでint a;を使ってたらそりゃ不安定だろうね
0162デフォルトの名無しさん
垢版 |
2018/07/20(金) 18:38:08.70ID:obfOsgMS
aを不定なまま使えば不安定になるかも知れないが
>>157のコードだけならなにも問題ない

>>157の回答としては
「許される」が正解
0165デフォルトの名無しさん
垢版 |
2018/07/20(金) 21:15:25.57ID:MVqkCRqy
int a; // 未初期化
if (hoge) {
const a = 1; // if の中だけで使える変数aを新たに宣言
const int b = 1; // こう書いてbを使うのと同じ
} else {
const a = 1; // else の中だけで使える変数aを新たに宣言
const int c = 1; // こう書いてcを使うのと同じ
}
int i = a; // 未初期化のままaを使おうとして「不安定な動きをする」
0169デフォルトの名無しさん
垢版 |
2018/07/21(土) 07:16:56.35ID:ZZ4YytrN
もうしわけない。金毘羅様に言及すべきだったのにそうしなかったのが情けない。
0170デフォルトの名無しさん
垢版 |
2018/07/21(土) 11:56:28.78ID:KXd0ss1Q
警告オプション有効にして助言をもらおう
> warning: variable 'a' is uninitialized when used here [-Wuninitialized]
0172デフォルトの名無しさん
垢版 |
2018/07/21(土) 12:23:02.98ID:L4ZstKjT
そんなのは道楽でC++やってるあまちゃんのたわごとだ
俺なんかは最初からC++以外に用意されてなかった
0173デフォルトの名無しさん
垢版 |
2018/07/21(土) 12:34:14.56ID:Zy/M/93a
c++はできるだけの範囲で出来るだけのことをやればいい
意欲があればさらに進めばいい
むりして難しいことをやらなくてもいい
c関数での文字列の処理が嫌ならstring使えばいい
楽なところは楽でいい
0174デフォルトの名無しさん
垢版 |
2018/07/21(土) 13:42:42.85ID:V/L9XjgX
template <typename TypeA, typename TypeB> void TempSet(TypeA* Obj, void (TypeB::*Method)())
{
*Obj->*Method;
}

これがエラーでコンパイルできないんですが、
TypeBのメンバ関数呼び出すのはどうやればいいんでしょうか?
TypeAはインスタンスのオブジェクトポインタです
0175デフォルトの名無しさん
垢版 |
2018/07/21(土) 13:44:42.66ID:gIfo2zic
でも++が一番ストレスなく組めると思う。
0179デフォルトの名無しさん
垢版 |
2018/07/21(土) 18:50:32.76ID:yF+tsqCG
VMWare使ってLinux入れてみた
貧弱なPCでめちゃくちゃ重すぎるがコレで普通にコンパイルはできる
いままで黙ってたがMSのコンパイラでコンパイルしてたからな

やっとオレの芸術的なパーザをコピペで作る準備が整った
0183デフォルトの名無しさん
垢版 |
2018/07/21(土) 20:18:57.06ID:ZZ4YytrN
ubuntu on windows は、ウィルス対策ソフトのウィルス・バスターがubuntu上のプロセスを監視対象として認識しないらしく、きびきびと起動・実行できる。
それがいいことか悪いことかは、さておき。
0189デフォルトの名無しさん
垢版 |
2018/07/21(土) 22:50:00.50ID:yF+tsqCG
32bitのlinuxしか入らんから
それでもいちいちめんどくさいことは分かった
0190デフォルトの名無しさん
垢版 |
2018/07/21(土) 23:13:14.47ID:NpMyvs3y
macならdockerでlinux環境作るのもありかなと思ったが、
winだとまだdockerインストールめんどくさげだね。
0191デフォルトの名無しさん
垢版 |
2018/07/22(日) 12:08:37.73ID:LuRYHz2h
>>179

自分もvmwareでlinux入れてましたが、メモリ4GB(有効なのは約3GB)の初代i3ノートPCで、vmware割当メモリ700MBくらいで使ってましたが
かなり重かったけど立ち上がったらそこそこスムーズに使えてました。
メモリ8GBくらいあればvmwareに1GB〜2GBくらい割り当てれば、そこそこストレスなく使えそうな気がします。

ちなみにすでに知ってるかもしれませんが、win10だとubuntu?っぽいのを直接インストールできます。
windows内にゴミがたくさんできそうだから個人的には躊躇しますが。

ttp://www.atmarkit.co.jp/ait/articles/1608/08/news039.html
0192デフォルトの名無しさん
垢版 |
2018/07/22(日) 14:07:01.86ID:ST9MozRw
それは入れないほうがいいよ
互換性問題があるしかなり機能を絞られてる
使ってみてわかる誰得機能
容量も十数G必要

VirtualBoxを普通にいれたほうが使い勝手がいい
0193デフォルトの名無しさん
垢版 |
2018/07/22(日) 20:18:52.55ID:mbi94QjP
> 容量も十数G必要
いや1GBも要らんよ、どこ確認したんだw

WSL丸ごと%LocalAppData%\Packages\CanonicalGroupLimited.*.ならんちゃらに突っ込まれる形式だから
ホストOSにゴミが残るってのも杞憂

最近はDocker Engineがそれなりに動く程度には互換性も高まってきてるみたいね
エクスプローラのアドレスバーからbashで窓側をカレントディレクトリにして起動できるのが良い
0194デフォルトの名無しさん
垢版 |
2018/07/22(日) 20:20:13.96ID:Nia5Zbws
>>192
> 互換性問題があるしかなり機能を絞られてる

WSL(Windows Subsystem for Linux)は、C++やLinuxシステムコールを使ったGNUプログラミング環境としては必要十分だと思うけど、具体的にどんな問題あるの?
0195デフォルトの名無しさん
垢版 |
2018/07/22(日) 20:26:16.94ID:tfHLB3F/
>>194
サービス書くときかな。
他はWSLが楽だと思う。
0196デフォルトの名無しさん
垢版 |
2018/07/22(日) 20:28:26.39ID:tfHLB3F/
Linuxを使う意図はサーバーか組み込みなので、WSLで足りない場合もあると思うんだけど、ひな形があれば済む話かもしれんね。
0197デフォルトの名無しさん
垢版 |
2018/07/22(日) 20:31:49.81ID:ST9MozRw
サーバ系がサポートされてない
使うならVM使ったほうがいいよ
ファイルシステムもwindowsのものの上に作られてるのであれこれ問題が出る

>>193
1Gというのが笑えるw
コンパイルしないのかw
0198デフォルトの名無しさん
垢版 |
2018/07/22(日) 20:34:24.26ID:tfHLB3F/
>>197
VMは大げさすぎるかな。
使えるときはWSLを積極的に使っていきましょうよ。
とてもいいものですから。
0199デフォルトの名無しさん
垢版 |
2018/07/22(日) 20:41:37.63ID:tfHLB3F/
VMは一つのパソコンで複数のOSを動かすのでOSの数だけメモリーを食うんですよね。
その点、WSLはWindowsがLinuxのようにふるまうだけなのでWindows分のメモリーしか食いません。
そんなわけなので、お財布にやさしいんです。
それでいてサービスの開発以外では全く遜色在りませんし、そもそもサービス開発だって、大詰めを迎えるまではdaemonとして起動することはないでしょう。
0200デフォルトの名無しさん
垢版 |
2018/07/22(日) 20:42:00.95ID:ST9MozRw
bash使うだけならわかるけどコンパイルも含めて何か使おうとするなら
既知の問題や互換性に問題もあるものを選ぶのはクレバーだと思わない
0201デフォルトの名無しさん
垢版 |
2018/07/22(日) 20:44:34.92ID:ST9MozRw
WSL上のバッドノウハウをひたすら集めたいとか
縛りのある環境のほうが燃えるというなら止めはしない

ただわからない人に勧めるものじゃないなって思う
不具合があった場合それがどこ由来なのか特定できない人間には特にすすめちゃダメ
0202デフォルトの名無しさん
垢版 |
2018/07/22(日) 20:45:31.78ID:tfHLB3F/
>>200
ディストリビューターが開発する本物のディストリビューションですからまったく問題ありませんね。
Canonicalが開発した本物のUbuntuがWindowsで動くのです。
もちろんDebianであっても同じことです。
0203デフォルトの名無しさん
垢版 |
2018/07/22(日) 20:50:22.91ID:ST9MozRw
>>199
>>202
ディストリビューターが提供しようが
WSLはlinuxでもないwindowsでもない不思議な物
両方の制限の積 windows ∩ linuxでありわざわざ苦労することはないよ

windows上の疑似linuxであってかなりニッチな物
どこかおかしくても不思議じゃない
0204デフォルトの名無しさん
垢版 |
2018/07/22(日) 20:56:04.07ID:tfHLB3F/
WSL、CMake、VCPKGがお勧めキーワードです。
C++ユーザーにはUbuntuをお勧めします。
gcc-7を導入してC++-17をご利用ください。
0206デフォルトの名無しさん
垢版 |
2018/07/22(日) 20:57:52.61ID:Nia5Zbws
今のWSLはLinuxのdaemonもサポートしてるから問題ないと思うんだけど、具体的にどんな問題起きたの?
0207デフォルトの名無しさん
垢版 |
2018/07/22(日) 20:58:04.83ID:tfHLB3F/
Visual Studio 2017にはLinux DebugとLinux Releaseというターゲットがあり、標準でLinuxをサポートしていますよ。
0208デフォルトの名無しさん
垢版 |
2018/07/22(日) 20:58:48.25ID:ST9MozRw
c++使うような厳格さを求める人間がWSL使ってるとは思わなかった
WSLで動いたとして他の環境で動くとは保障されないのに
どこがおかしいのか推定もできない仕組みの上で何故ごみを作るんだ
0209デフォルトの名無しさん
垢版 |
2018/07/22(日) 21:01:33.45ID:tfHLB3F/
>>206
init機構がWSL用だから。
それを言い出すと、RedhatとUbuntuだって違うじゃないかということになるけど、Redhatに配備するものはRedhatで開発してたのが今までのスタイルなので、VMのほうが良いという人はその点を指摘してるんじゃないのかな。
それ以外にWSLを使わない理由がないので。
0210デフォルトの名無しさん
垢版 |
2018/07/22(日) 21:04:40.18ID:tfHLB3F/
まあ逆に言うと、WSLで動かないのであれば、Linuxディストリビューション間でも可搬性が無いよね。
0211デフォルトの名無しさん
垢版 |
2018/07/22(日) 21:05:04.20ID:Nia5Zbws
>>208
実機Linuxならどこがおかしいか推定できるという根拠はないでしょ。
むしろ、WSLのような抽象化された環境でさえ動かない稚拙なものを実機に持っていく気なの?と言い返すことさえできるのだけど。
0212デフォルトの名無しさん
垢版 |
2018/07/22(日) 21:07:21.30ID:ST9MozRw
違う違う
普通のlinuxで動くコード書いててもWSL上では動かせない場合があるのが問題だろ
0213デフォルトの名無しさん
垢版 |
2018/07/22(日) 21:09:42.72ID:tfHLB3F/
>>212
そういうものがあるのかどうか知らないけど、あるならなおさらWSLで開発したほうが可搬性を担保できてよいのでは。
0214デフォルトの名無しさん
垢版 |
2018/07/22(日) 21:10:55.12ID:ST9MozRw
>>211
根拠とかそんなんじゃない
考慮すべきことが多すぎる

自分のコードがおかしいのか
linuxのそもそもの仕組みがおかしいのか
MSのWSLがおかしいのか
ディストリビューターの提供してるイメージがおかしいのか

それぞれが組み合わさっておかしくなってるのか考慮する条件が増えすぎる
0215デフォルトの名無しさん
垢版 |
2018/07/22(日) 21:11:03.95ID:Nia5Zbws
>>212
問題なんてほぼないでしょ。
VM上で動いて喜べるレベルならWSLでも同じだから。

あなた、WSLで動作確認したことあるの?もしや憶測で書いてない?
0216デフォルトの名無しさん
垢版 |
2018/07/22(日) 21:11:34.45ID:tfHLB3F/
clはかなり寛容なコンパイラなので、gccでコンパイルできるかチェックしとくとより良いコードが書けますよ。
そんな用途でもWSLは素晴らしいと思います。
0217デフォルトの名無しさん
垢版 |
2018/07/22(日) 21:13:06.02ID:tfHLB3F/
>>214
それたぶん、自分のコードが悪いと思いますよ。
Linuxは十分安定してるので、Linuxの問題を真っ先に疑うのは、自信ありすぎだろって感じます。
0218デフォルトの名無しさん
垢版 |
2018/07/22(日) 21:14:34.32ID:ST9MozRw
>>215
最初のころはめちゃくちゃだったのでもう入れてない
ハードリンクの仕組みもおかしいし
タイムスタンプもおかしいし
TCPなど制限も山盛りあった
すでにあるコードも何故か動かないことが多かった
0219デフォルトの名無しさん
垢版 |
2018/07/22(日) 21:16:43.51ID:tfHLB3F/
開発環境はWSLがいいんじゃないですかね。
0220デフォルトの名無しさん
垢版 |
2018/07/22(日) 21:19:27.33ID:Nia5Zbws
>>214
抽象化されていると問題特定が容易と考えるのが一般的だと思っていたのだけど、
抽象化された環境は問題特定が難しくなるという考え方は画期的ですね。
0222デフォルトの名無しさん
垢版 |
2018/07/22(日) 21:22:41.34ID:tfHLB3F/
クロスプラットフォームを標榜するなら、開発環境としてWindowsを選択するとよいです。
Visual StudioはWindowsとMacで使えます。
WSLによってVisual StudioからLinuxバイナリを構築できます。
MSBuildとCMakeは悩みどころですが、MSBuildはサポートが手厚く、CMakeはVisual Studioが無くても構築できます。
そこらへんで選択するとよいのではないでしょうか。
0223デフォルトの名無しさん
垢版 |
2018/07/22(日) 21:28:34.40ID:tfHLB3F/
まあ僕はVisual Studio、WSL、VCPKG、CMakeプロジェクトを使っているので、わかることはお答えしますよ。
0224デフォルトの名無しさん
垢版 |
2018/07/22(日) 21:56:04.01ID:Nia5Zbws
悪いことは言わないので、LinuxプログラムはWSLで動くことを優先して書くことをお勧めする。
他人のために時間を使いたくないのは誰でも同じ。おのずと楽に評価できる環境に流れるのは止められない。
0225デフォルトの名無しさん
垢版 |
2018/07/22(日) 22:35:05.45ID:Nia5Zbws
イスラームの救貧制度がかえって免罪符の役割を果たしてないか。
イスラームの救貧制度があることで、かえって商業上の強欲が横行していないか。
0226デフォルトの名無しさん
垢版 |
2018/07/22(日) 22:37:37.06ID:Nia5Zbws
誤爆したけど、謝罪はしない。

イスラム教は野蛮な宗教である ★4
ttps://lavender.5ch.net/test/read.cgi/whis/1525163440/
0227デフォルトの名無しさん
垢版 |
2018/07/22(日) 23:57:15.36ID:g7OD+nvH
だいたいでけてきたわ
コード修正をすることによって効果を簡単に計測できるように修正してる
こっちのが結構大変だったわ
0228デフォルトの名無しさん
垢版 |
2018/07/23(月) 01:50:38.00ID:SStA1pnM
というわけでうpした
長い戦いだった
http://fast-uploader.com/file/7087832585811/
baka_source.zip

build.shを実行すると、3つの実行モジュールができる

3つとも少し修正した(解析処理はファイルがものすごい増えたから大きく修正したように見えるハズ)

 ・テストデータジェネレータ(データの出力個数の出方を少し修正した)
 ・ストレージ能力計測プログラム(I/OのアドバイスをOSに与えるように修正)
 ・解析処理(1. 解析の処理方法自体は一切かわってないがコードの構成をバカでも分かるように変更 2. I/OのアドバイスをOSに与えるように修正)
0229デフォルトの名無しさん
垢版 |
2018/07/23(月) 01:56:28.48ID:SStA1pnM
で、パーザーは基本に則った作りになってる
クラスに分ける意味があるかどうかはおいといて
一般的な再帰下降パーザーになってる

BNFを構文解析する要領と同じといっていい
バカでもチョンでも分かるハズ

baka_parser_all
┣baka_parser_title
┗baka_parser_sections
 ┣baka_sub_parser_section
 ┣baka_parser_section_stat
 ┣baka_parser_text
 ┗baka_parser_elem
  ┣baka_sub_parser_xy
  ┃┗baka_sub_parser_qq_value
  ┣baka_parser_numbers_x
  ┃┣baka_sub_parser_qq
  ┃┃┗baka_sub_parser_qq_value
  ┃┣baka_sub_parser_rr
  ┃┗baka_sub_parser_number_x
  ┗baka_parser_numbers_x
   ┣baka_sub_parser_qq
   ┃┗baka_sub_parser_qq_value
   ┣baka_sub_parser_rr
   ┗baka_sub_parser_number_y

詳細な解析処理をする前に
簡易な解析処理をしたい場合(ブロックの位置情報やサイズ情報なんかだけを先に取りたい場合)、
そのクラスにそのレベルの処理を突っ込んどけばいい
解析処理の詳細さの粒度はそこでテキトーにきめればいいと思う
0230デフォルトの名無しさん
垢版 |
2018/07/23(月) 02:11:50.60ID:SStA1pnM
一応、parserとsub_parserの違いだけ捕捉しておく
結論からいえばデータの形式がくさってるからそういうのを入れた

parserクラスは最初に一行読んで、必ず次の行頭(LFの次)でポインタが停止するようになってる
sub_parserクラスは行は読まずに、与えられたポインタから行の途中でポインタが停止するようになってる

※ 例外はあるがsub_parserクラスは大体 LF の上(行末)で停止する
※ 停止しない例外は、sub_parserクラスが連続してる箇所が間違いなく該当することになる
0231デフォルトの名無しさん
垢版 |
2018/07/23(月) 20:33:09.90ID:SStA1pnM
コードの記述に一箇所誤りがあった
動作に影響は一切ないが記述ルールに問題があるから
修正しといたほうがいい

削除
 baka_sub_parser_section.h
  (L34) ++c_buf_p_; // skip LF

追加
 baka_parser_sections.h
  (L48)++c_buf_p_; // skip LF

ひたすら元のコードをコピペして貼り付けてたから
気付かなかったわ

このスレで相談してたバカはちゃんと動作確認してんのか
0232デフォルトの名無しさん
垢版 |
2018/07/23(月) 20:39:12.44ID:SStA1pnM
ちなみにオレのpcのosはvistaだからな
まずwslなんか動くワケがない

あと、オレのpcは32bitの計算機だから
32bitのlinuxしか動かない
pcが32bitだからな

512MBのメモリでvmware動かして
slackwareのlinuxで動作確認をした

ちなみに64bitのwindowsは一切考慮してない
考慮不要だからな
32bitのlinuxと32bitのwindowsで動作確認はできてる

つまり64bitのlinuxでは動作確認はしてないが
一応、64bitのlinuxにも対応できてる想定になってる
きっと動く
※ baka_common.hぐらいの考慮で十分なハズ
0235デフォルトの名無しさん
垢版 |
2018/07/23(月) 20:53:16.24ID:SStA1pnM
ほとんどストレージの読み込み時間
パーズはばっちり
これ以上ないデキだ

解析する量を減らせばもっと速くなる

動かせば分かる

印字されるスループットを
どうすれば最大化できるか考えるのはこのスレのバカだ
道具はほぼすべて揃ってる
0239デフォルトの名無しさん
垢版 |
2018/07/23(月) 22:01:24.41ID:JOGfItcj
>>228

ありがとうございます。
なぜか下記修正をしないとコンパイルエラーで怒られました。
gcc-8.1を使っているけどそのせい?

baka_common.h
 PRIu64を有効にするため27行目に行追加:#include <cinttypes>

baka_spec.cpp
 107, 111, 125行目を修正:%d → %zd

build.sh
 clock_gettimeを有効にするためコンパイルオプションに-lrtを追加

少しコードを見ましたが、クラスのオブジェクト生成時に&があるのが
何を意味しているのかよくわかってなかったり、classのpublic内に関数名だけでなく
関数の中身も直接そのまま記述できるのを初めて知ったりと
色々新しい所があるのでじっくり見て勉強したいと思います。

つづけて実行結果を書きます。↓
0241デフォルトの名無しさん
垢版 |
2018/07/23(月) 22:03:34.73ID:JOGfItcj
取り急ぎ新しいgenツールで13GBを作り、読み込んでみました。
>>231 の修正ままだしてませんが大丈夫ですかね?

## spec(ハード性能チェック?)
LINUX% ../baka_spec ./aaa_13GB
Mon Jul 23 18:14:22 2018 : starting... 14107393277 bytes read (read block size = 131072 bytes) ./aaa_13GB

Mon Jul 23 18:14:24 2018 : done... 14107393277 bytes read (read block size = 131072 bytes) ./aaa_13GB
read_block_size ::= 131072 bytes, file_size ::= 13453.86 MiB, turnaround_time ::= 2.27 sec, throughput ::= 5920.39 MiB/sec

※複数回実行でだいたい5500〜6000 MiB/sec

## parser
LINUX% ../baka_par ./aaa_13GB
"./aaa_13GB" : size = 14107393277 bytes
Mon Jul 23 18:15:19 2018 : starting... ../baka_par ./aaa_13GB
Mon Jul 23 18:15:19 2018 : section_count = 1, offset = 144275554 bytes, size = 144275513 bytes, turnaround_time = 0.21 sec, throughput =
646.15 MiB/sec

Mon Jul 23 18:15:39 2018 : section_count = 79, offset = 14107393277 bytes, size = 176862384 bytes, turnaround_time = 0.25 sec, throughput = 662.80 MiB/sec
Mon Jul 23 18:15:39 2018 : done... ../baka_par ./aaa_13GB
turnaround time : 20(secs)

ついでに前回のコードでも試しました。↓つづく
0242デフォルトの名無しさん
垢版 |
2018/07/23(月) 22:04:55.29ID:JOGfItcj
## ついでに https://ideone.com/E6QH2r で同じファイルを読み込んだ時間
LINUX% time ./a.cpp aaa_13GB

strat... ./a.out /mnt/home2/pjupm/dbl/work/kinoshit/rve/cpp/final2/baka_source_kino/temp/aaa_13GB (null)
done... ./a.out /mnt/home2/pjupm/dbl/work/kinoshit/rve/cpp/final2/baka_source_kino/temp/aaa_13GB (null)

real 0m16.243s
user 0m14.024s
sys 0m2.199s

↑の実行時間約16秒と >>241 の約20秒の約4秒の差分はざっくり言うと
文字や数値をt_all_db構造体に格納するのに要した時間ということでしょうか?
0244デフォルトの名無しさん
垢版 |
2018/07/23(月) 22:18:11.65ID:SW13TXDW
>>243

これは >>242 のことですか?
それぞれは下記のようですが、sys=読み込みのみの時間 となるんですかね。

real プログラムの呼び出しから終了までにかかった実時間(秒)
user プログラム自体の処理時間(秒)(ユーザCPU時間)
sys プログラムを処理するために、OSが処理をした時間(秒)(システム時間)
0246デフォルトの名無しさん
垢版 |
2018/07/23(月) 23:09:13.26ID:SStA1pnM
オレのとこでは
baka_parもbaka_specも
どっちも30〜32MiB/secだから同じだ
つまりほとんど読み込み時間
どっちも8分ぐらいかかる

で、そっちのは

 baka_spec
  turnaround_time ::= 2.27 sec ← 2秒で読み込めてる!

 baka_par
  turnaround time : 20(secs)

そっちでは明らかに解析処理が足をひっぱってる
つまり初回の解析処理をさぼればもっと速くなるハズ
0248デフォルトの名無しさん
垢版 |
2018/07/24(火) 00:12:21.91ID:dbjTOx+1
>>246
par, specともにほぼ同じですか。

すみません。話についていけてないです。。
初回の解析処理をサボるとはどういうことですか?

自分が書いたら40〜50secだったので20secですでにかなり速いと思ってるんですが、まだ高速化の余地があるんですね。
0249デフォルトの名無しさん
垢版 |
2018/07/24(火) 01:27:55.10ID:2rkV2Cvq
普通に考えたらこんなもん全部メモリに格納しようというほうが
普通に考えて狂ってると個人的には思うからな、それ専用の計算機ならともかく

ちなみに全部メモリに格納しようとすれば、その格納のオーバーヘッドで
さらに時間がかかることになることは予見できてる
すべてメモリにのせるDBの発想に近いが、そういうDBMSでも起動時のロードにはものすごい時間がかかる

かりにな全部データをメモリに格納しないなら
全部解析する必要はない

過去にセクションは100個ないぐらいといってたと記憶してる
仮定の話になるが、例えば1セクション読みこむのにどれぐらい時間がかかるかということになる

いまぐらいの速度がでるなら
セクションの位置とサイズだけを先に取得して
後で必要な部分のデータを再度読みこんでオンデマンドで解析しても
十分な速度がでるような気がしないでもない
(最初にどこまで解析して取得するかはとりあえず今はおいといて)
0250デフォルトの名無しさん
垢版 |
2018/07/24(火) 01:32:16.00ID:2rkV2Cvq
で、やりたいことは、これまでのレスを読むかぎりでは
でっかいファイルの内容を画面に表示するだけだと思う

それだけのことなら実機の高い処理能力を考慮すれば
トップダウン方式で必要な箇所をオンデマンドでロードして取得する方法で十分な気がする
そのほうが計算機にも優しいし、15Gのデータを全部眺めるバカなんかまずいないだろうしな

こんな感じのことをやるのかなあとは思ってる

Ex.

 データ取得の要求が3段階でされると仮定してる

  @セクションの列
  AXY with QQ、RRの列(入力:セクションのSEQ)
  B数値の列(入力:XYのSEQ)

 A) 画面の初期表示では@で十分
 B) セクションを展開して表示するときはAの取得で十分
 C) X、Yを展開して表示するときはBの取得で十分
0252デフォルトの名無しさん
垢版 |
2018/07/25(水) 00:09:01.02ID:rOCCX8po
>>249,250

>すべてメモリにのせるDBの発想に近いが、そういうDBMSでも起動時のロードにはものすごい時間がかかる

まさにこの発想で考えていました。
すべて構造体に格納しようかと…

>  @セクションの列
>  AXY with QQ、RRの列(入力:セクションのSEQ)
>  B数値の列(入力:XYのSEQ)

> A) 画面の初期表示では@で十分
> B) セクションを展開して表示するときはAの取得で十分
> C) X、Yを展開して表示するときはBの取得で十分

アドバイスありがとうございます。

1stステップ →上記@のセクション名、次行にあるx/yの個数、その次のテキスト行を取得しGUI表示
2ndステップ →GUIから セクション内の数値全部 or x/yの任意の番号 のどちらかを選択し表示(上記ABをその都度fseekでピンポイントに取得)

の2段階で検討してみます。
支配的なのはBの部分なので、そこを分離すれば負荷はかなり減るのではと思います。

>>251

8秒ですか。。
そのようなハイレベルな解析は日曜大工レベルの自分には当分作れそうにないです…
0253デフォルトの名無しさん
垢版 |
2018/07/25(水) 01:22:39.02ID:FQQJXzBx
>>252
何をする気か知らんし、読み返す気もないが、
> 日曜大工レベル
なら他言語使えよ。今のC++は君向けではない。
一通りも出来ないのだから、普通はPerl/Ruby/Pythonのどれかだと思うが。

あとここは「ぼくのさいきょうのそふとうぇあ」のスレではないから、
実際埋め立て状態だし、全く終わる気配もないし、
別スレ立ててやるのがマナーだと思うぞ。
0254デフォルトの名無しさん
垢版 |
2018/07/25(水) 05:58:28.01ID:5wxx8yDL
A.exeがB.exeを立ち上げる

A.exeがB.exeの起動時に共有メモリ先を渡すのに
その空間を指定するのはどうすれば良いんでしょうか
0256デフォルトの名無しさん
垢版 |
2018/07/25(水) 07:25:34.67ID:5wxx8yDL
winAPIのmemorymapedfileを調べてみたけど
winAPI便利だが触ったことないと敬遠しちゃう
0257デフォルトの名無しさん
垢版 |
2018/07/25(水) 13:33:42.64ID:CBV5hJrX
>>253
日曜大工とか書いてるけど、サーバー使ってやるとか言ってたから実務だと思うが
あまり初心者を弾くようなことを言うな

>>252
速度は実用レベルになりゃそれでとりあえずいいんじゃないの
ドヤりたいやつや喧嘩したいやつに惑わされるな
回答は参考にとどめて、自分でやってみてどうしてもわからないところだけ聞きに来い
スレを私物化するな
0258デフォルトの名無しさん
垢版 |
2018/07/25(水) 17:57:43.34ID:EWaeEahr
>>254
プロセス間共有メモリはプラットホーム依存でありC++の範疇ではないので、続きは以下スレでどうぞ。

>>256
あなたも。


Win32API質問箱 Build124
ttps://mevius.5ch.net/test/read.cgi/tech/1510395780/
0259デフォルトの名無しさん
垢版 |
2018/07/25(水) 19:13:03.63ID:v8CmSWWw
>>257
この程度のことを延々と続けられては、迷惑行為でしかないだろ。
実務なら上司に聞け、でしかないし。

最近アホが大量流入して、このスレは一気にレベルが落ちたよな。
お前らがそれについてどう思っているのかは知らんが。

お前は「プログラミング初心者」をここで飼いたいのか?
「C++初心者」はいいとして、C++は「プログラミング初心者」向けの言語ではない。
そもそも組み方も根本的に間違っている気がするが、
俺はこんな奴に教えてやる気はないし、
他の誰も指摘しないところを見ると、まあそういうことなんだろ。
(俺はソースは見てないが)
0261デフォルトの名無しさん
垢版 |
2018/07/25(水) 19:32:17.67ID:Iaq9Mrpc
空気読めないド初心者と、ド初心者相手にマウント取ってイキってる半角雑魚オヤジが二人で傷を舐め合ってるだけ
その二匹をNGすれば平常運転よ
0263デフォルトの名無しさん
垢版 |
2018/07/25(水) 20:01:29.95ID:CBV5hJrX
>>259
いやそもそもは速度が必要なのでC++選んだ(C++については素人なので、何故自分のコードが遅いかわからない)、という話
最初の質問は何もおかしくなかったよ
前スレはもう読めないかもしれんが。

もういい加減自分で進められるだろうからいちいち報告しないでほしいが
0264デフォルトの名無しさん
垢版 |
2018/07/25(水) 20:20:05.41ID:v8CmSWWw
STLつかうと一気に実行ファイルサイズが10倍に?!

環境によるだろ。
俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力
ランタイムを使用するようにして使っているが、例えばstd::vectorを
使っても使わない時と比べ10Kほどしか増えない

すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。

C1010: プリコンパイル済みヘッダーの検索中に予期しない EOF を検出しました。
とかいうエラーが出るんだけどこれってどうすればいいの?

#include <stdafx.h>
後死ね。

言葉が悪いな。それで教えているつもりか。
まぁヒントぐらいにはなったな。
うむごくろう。

いつまでこの糞テンプレ張り続けるんだおい

---- テンプレ ここまで ----

>>263
なんだかんだでこのテンプレが馬鹿よけとして素晴らしく機能してたって事だよ。
それを嫌う奴が無理に剥がそうとした結果、このザマだ。
このテンプレはこのスレを極めて的確に表現しているし、C++のノリはこれだよ。
しかし、スレ検索するとC++スレって40もあるのな。正直びびったわ。
適切なスレを探すことも出来ない馬鹿にはC++なんて無理だってことでしかないが。
0265デフォルトの名無しさん
垢版 |
2018/07/25(水) 20:38:35.94ID:v8CmSWWw
>>263
これか?
(専ブラでは読めないが、今はdat落ちしないので、通常ブラウザなら過去スレは基本読める)

> 743デフォルトの名無しさん (アウアウウー Sa0b-sule)2018/07/07(土) 23:53:17.73ID:HbEbhDY0a
> LINUXで15GBくらいのテキストファイルを読み込みこんでGUIを作ろうとしています。
> ファイルが大きいため速度が出せる言語で、かつGUI作成は情報量が多いと調べやすいので、まあまあメジャーな無料のGUIライブラリを使用したいと思っています。
>
> perl>>python>>>>C++ の順で経験があり、C++はあまり詳しくないですが、速度重視でC++で行こうと検討しています。
> GUIライブラリを調べているのですが、C++のGUIはあまり情報を見つけられず、めぼしいのはQtくらいしか目に付きませんでした。
> 会社のサーバのローカルディレクトリにQtをインストールしてみましたが、必要なライブラリが古かったりで、インストールできませんでした。
>
> 他に何かおすすめなGUIライブラリはありますでしょうか?
> https://mevius.5ch.net/test/read.cgi/tech/1528382412/

ならC++選んでいる時点で間違いだろ。
理由は教えてやらないが、当然そうだからこそ、適切なライブラリがない。
というか、本当に初心者でないのなら、
適切なライブラリがない=みんなやってない=地雷臭を感じとれっての。
C++で書けば何でも速くなると思っている馬鹿、最近増えたよな。何故かは知らんが。
0266デフォルトの名無しさん
垢版 |
2018/07/25(水) 20:52:15.60ID:MsjPsnRN
くだらない選民思想はやめた方がいいよ、C++をベターCとしてしか使えない人でも
素晴らしいソフトを書き上げてる人は腐るほど居る

大体選民思想に走るやつってC++を実用してないやつなんだよなぁ・・・
0267デフォルトの名無しさん
垢版 |
2018/07/25(水) 20:54:27.06ID:MsjPsnRN
>>265
読めるなら読んでから言えよ

>適切なライブラリがない。
>みんなやってない=地雷臭を感じとれ
俺ゲーム屋なんだけど、居た会社はどこもみんな自社でライブラリというかフレームワーク作ってる
全部地雷なのか?
お前アマチュアだろ?
0268デフォルトの名無しさん
垢版 |
2018/07/25(水) 20:55:36.48ID:VnR4R5Pj
>>253,257

ご意見ありがとうございます。
自分にはもったいないくらいの洗練されたコードまで出して頂いてとても感謝しています。

アドバイスの通り、頂いたコードを元に自分で調べて見ます。
また色々やってわからないことろがありましたらご相談させてください。

あと、このスレはこれからも拝見させていただきたいと思います。
0269デフォルトの名無しさん
垢版 |
2018/07/25(水) 21:34:44.04ID:EWaeEahr
共有ポインタがC++に正式採用されたことで、JavaなどGC機能を持った他言語の優位性が薄れたわな。
コンパイル速度も上がったし、開発機のメモリも増えたしで、昔よりC++を使うストレスが軽くなった。
なので皆、C++に回帰してくる。
0270デフォルトの名無しさん
垢版 |
2018/07/25(水) 21:47:04.47ID:WkyhwwwQ
>>265
うわっ
なんだこの初心者丸出し野郎

>>266
> C++をベターCとしてしか使えない人でも
使えない
じゃなくて
いろいろと判断してそういうコードに意図的にするんだよ

そう判断する理由の例としては
互換性
パフォーマンス
コードサイズ
開発工数 / 評価工数
等々
0271デフォルトの名無しさん
垢版 |
2018/07/25(水) 21:52:55.17ID:99/tYlRK
>>267
話の内容から読む価値が全くないと分かるから読まないんだよ。
つか、初期はみんなまともな指摘してるじゃねえかよ。
ガン無視して今の有様のようだが。

> お前アマチュアだろ?
お前も無駄マウントするのではなくて、実力は投稿で示せよ。
そもそもC++用ゲームエンジンはありまくりだろ。
C++はその用途に向いているからみんな使ってる。だからそういう現実がある。
俺はそういうことを言ってるんだよ。
(日本の会社は何故かプロプライエタリに拘っているのも事実だが)
0272デフォルトの名無しさん
垢版 |
2018/07/25(水) 22:11:44.07ID:MsjPsnRN
>>271
>お前も無駄マウントするのではなくて、実力は投稿で示せよ。
俺は半角のコードでいんじゃね?と思ったんで何も言わんかったw
>C++はその用途に向いているからみんな使ってる
あーそういうことか
でも構文解析をC++でやるのは決して間違いではないと思うけどな
0274デフォルトの名無しさん
垢版 |
2018/07/25(水) 22:25:44.36ID:exbGUQmA
まあ新しい機能がバンバン入る言語やライブラリってのは選民思想が湧きやすいもんよ。
昔からこの業界のそういうところは変わらん。
そしてそういうものがレガシーコードを量産するという現実も変わらん。
0275デフォルトの名無しさん
垢版 |
2018/07/25(水) 23:04:43.31ID:99/tYlRK
>>272
> でも構文解析をC++でやるのは決して間違いではないと思うけどな
大昔:yacc/lex
昔:bison/flex
最近さらに何か出てたと思ったが、使う気がないので忘れた。

そもそも元が15GBあって、それを全部目で見るわけないだろ。
単純には grep -i error とか、複雑ならいちいちperl等で切り出して眺めるもの。
やってることが最初から見当違いなんだよ。
仮に15GBのテキストを開けるテキストエディタを作ったとして、
スクロールバー長が1500pxあったとしても10MB単位でしかなく、
ドラッグアンドドロップでのスクロール操作は使い物にならない。
当然、マウスホイールで数行単位、クリックで1画面単位でスクロールしても埒が明かない。
結果的に行数じか打ちのジャンプしかないんだから、sedでいい。

俺が教えてやらねえ、って言ったのはこの件ではないけど、
「誰もそういうことをやらないからそういうもの(ライブラリ等)がない」ってのはあるから、
初心者なりにちゃんと考えろって事だよ。
上記は初心者でも理解できるだろ。気が付かないのは考えてないだけ。
そんな奴は勝手に死んでよし。
0276デフォルトの名無しさん
垢版 |
2018/07/25(水) 23:18:30.44ID:MsjPsnRN
>単純には grep -i error とか、複雑ならいちいちperl等で切り出して
確かそれはやりたくないって言ってたと思う
まぁ、俺もテキストのまま扱うのはどうかとは思ったけども

別に内容書き換えるわけじゃないんだしトータルでもメモリ上に残す情報は
大した量にはならないだろうから全部読めばいいじゃん、テキストは内容を理解したそばから捨てていいんだから
(用途が俺もわかってないからどっちがいいか不明だけど、初めて使うウインドウを開いたときに
ファイルアクセスと構文解析のラグを許容できるか、それとも立ち上げ時のラグを許容できるかどうか)

ってまぁ、さんざん既出なんでこのネタはもうやめようw
0277デフォルトの名無しさん
垢版 |
2018/07/25(水) 23:21:30.63ID:n4Pkvb3R
オレのコードのエレガントさが分かるようならまだ芽はある
オレのコードのエレガントさが分かるなら、もう一人でコードが書ける
これからも頑張り精進したまえ

低学歴知恵遅れニートのいうことなんかほっとけばいい

>>275 ← こういう低学歴知恵遅れを見れば分かるとおり
相談してる相手がまずなにがやりたいのか全く理解できてない
まず知能に著しい欠陥があるからまずなにごとであれ
要件というもんが理解できないのは間違いない

オマエも人に仕事をたのむだけの立場になったらな
>>275 ← こういうバカには仕事を頼んではダメだ
ということもこのスレで学べたハズだ
コレもこのスレで得た貴重な体験だ

コミュニケーション能力がゼロのニートみたいなヤツだからな

こういうヤツは
間違いなくこっちがお願いしたもんとまったく違うもんあげてくる
つまりこんなヤツには最初から仕事頼んだり関わらないのが吉
こっちの余計な手間と時間だけがかかるからな

このスレは、色々学ぶことができる
これからもちゃんとこのスレ読んで精進しなさい
0278デフォルトの名無しさん
垢版 |
2018/07/25(水) 23:28:31.94ID:EWaeEahr
sqliteはメモリ上にデータベースを構築できる。
どうせやるならsqliteに勝てるような車輪の再発明を期待したい。
0280デフォルトの名無しさん
垢版 |
2018/07/26(木) 00:14:32.88ID:yqOLTJbQ
>>276
ってかまじな話、正解だと思えるレスも散見されてるぞ。
無視してるんだからどうしようもないが。何がやりたいんだこの馬鹿は?
なお、俺的に正解と思えるのは、以下。(見落としあるかも)
----
773デフォルトの名無しさん (ワッチョイ e7c3-WPlw)2018/07/08(日) 23:16:50.92ID:w/p0hjmq0
テキストのパースなんてそれこそperlやpythonにやらせろよ
そんなところが速度にクリティカルに効いててゴリゴリ高速化しなきゃいけないのは作りがおかしい

866デフォルトの名無しさん (ワッチョイ 5fb3-C8Iw)2018/07/09(月) 22:41:30.68ID:Xc+Rjkat0
最低限のパースを実施して各レコードのオフセットを配列に入れて必要になった時に解析して表示すればいいだけかと

873デフォルトの名無しさん (ワッチョイ e7c3-WPlw)2018/07/10(火) 01:34:56.63ID:C7bP6ErJ0
なんかのログなんだろうけど、ログ吐く時に読み込みやすいように出し方考え直した方がいいよ
大本が変えられないならパイプ繋いでフィルタ噛まして、読みやすいように直したファイルを並行して吐くとかさ

というかまず単にSECTION_NAMEごとにファイルぶった切っておくだけで良かったりしない?難しく考えすぎてない?

874デフォルトの名無しさん (ワッチョイ e7c3-WPlw)2018/07/10(火) 01:46:08.72ID:C7bP6ErJ0
どういうGUIが必要なのかわからんから的外れかもしれないけど
ワイならSECTION_NAMEごとに集計したHTMLファイルかなんかを出力するプログラムをワンパスかけてから
後でそのHTMLをブラウザで見ることを考えたくなるんだけどそれじゃダメなの?

880デフォルトの名無しさん (ワッチョイ 4750-SFkP)2018/07/10(火) 07:31:15.21ID:wSs+8Os00
初めて開くファイルは使いやすいように変換して(キャッシュとして)保存しておいて
次回以降それを使うか
全ファイルバッチ処理で事前に変換しておくか

かな

ファイルを開く度に分オーダーかかるのは使いづらい
どちらが良いかは使い方次第で
0281デフォルトの名無しさん
垢版 |
2018/07/26(木) 00:15:01.25ID:yqOLTJbQ
まあ、俺ならperlで15000のファイルにあらかじめパースしてぶった切って、lessで見るね。
テンポラリファイルの有効/無効はタイムスタンプをチェックすればいいだけだし。

初心者は(選択肢を思いつけないから)無駄に難しい選択をしてはまることはよくあるけど、
正解をガン無視しているんだから死ねでしかないね。
これではお前ら的にもどうしようもないわな。

嘘を嘘と(ry は当然だが、
正解を正解と(ry だな今回は。
0282デフォルトの名無しさん
垢版 |
2018/07/26(木) 00:27:42.26ID:/19Lz3R7
やっぱりなコレが低学歴底辺の限界
わかるわ

所詮、低学歴底辺のドカタ
低学歴底辺のドカタは自分でログ見るらしいからな

すぐに分かるのが恐ろしい
このスレにはそんなのしかいないわ
0283デフォルトの名無しさん
垢版 |
2018/07/26(木) 00:30:53.03ID:/19Lz3R7
クソニートの趣味のぱちょんこん講座の邪魔されて
クソニートどもがイライラしてるのはわかるわ

クソニートのツールなんかクソニートしか使わないからな
クソニートらしい発想といっていい

まず自分がどうするありきだからな
自分以外の人間なんか関係ない

クソニート臭がプンプンする

やっぱりなニオイは隠せないわ
0285デフォルトの名無しさん
垢版 |
2018/07/26(木) 07:10:18.33ID:QCphLLid
前スレからID追うと、このスレ立てたの15Gテキストの質問者で
ワッチョイとテンプレを失敗してる

いっそワッチョイ付きで立て直して、ここは放棄するのもありじゃないかな…
0286デフォルトの名無しさん
垢版 |
2018/07/26(木) 08:02:19.67ID:wiCSHgxo
失敗してるワケねーんだよなぁ
ワザとだろ
俺TUEEするためだけに立てられたクソスレだよw
0287デフォルトの名無しさん
垢版 |
2018/07/26(木) 08:03:29.18ID:wiCSHgxo
やってることがTUEEとDANZAI、アホなSS未満のクズだろ
だからワッチョイは無いw
0288デフォルトの名無しさん
垢版 |
2018/07/26(木) 15:23:01.83ID:MiqKt3xH
世の中のパーサーは入力としてストリームを想定する場合が多い。
一方、OSはストリームを想定しなくなってきている。
IOCP、epoll、kqueue等を想定するプログラムにとって、必要なものは、一文字入力すると状態が変わるようなプッシュ型パーサーではないだろうか。
0290デフォルトの名無しさん
垢版 |
2018/07/26(木) 22:11:39.16ID:SqpdcEmq
途中で送ってしまった...
キャラポインタをビーストリングに変換したいです
マ ルチバイトトゥーワイドキャラでよい?
今やってるのだけど一切できなくて辛い

環境はウィンドウズです
エヌジーワードのためカタカナ混ぜてます
0291デフォルトの名無しさん
垢版 |
2018/07/26(木) 22:43:19.63ID:vMAtbXfy
>>290
C++的な回答をするなら、BSTRをラップしたCComBSTRクラスを使ったほうが楽だしドキュメントも多くていいと思うよ。
0293デフォルトの名無しさん
垢版 |
2018/07/26(木) 23:22:38.59ID:vMAtbXfy
>>292
すでに知らないうちにCOMを使っているはずなので、今更COMを使ってよいか気にしなくていいよ。
0295 ◆QZaw55cn4c
垢版 |
2018/07/26(木) 23:29:25.64ID:vjtcTWe7
>>294
別にテンプレがあろうとなかろうと、スレに投稿される内容に変わりはしない、と思うのですが?
もしかして「おまじない」とかが好きなんですか?

半角氏は連続して投稿する傾向にあり、IDだけで割合に弾けるのでワッチョイは要らないと思っています
0297デフォルトの名無しさん
垢版 |
2018/07/26(木) 23:55:55.79ID:JU6NqyqF
>>295
> テンプレがあろうとなかろうと、スレに投稿される内容に変わりはしない
ならあってもいいって事になるが、それに対する反論は?

俺はワッチョイもあのテンプレも機能してたと見ている。
実際、もう初心者要らないんじゃ、って話になってたのは事実だろ。
お前がそれに反対したのも事実だが。
0298デフォルトの名無しさん
垢版 |
2018/07/26(木) 23:59:13.70ID:OhRJcz2i
>>280

ご意見ありがとうございます。

SECTIONごとの切り替え目安は下記の時間でSECTIONを切り替えながら別のGUIソフトでマウスを使って改善していきます。

@数値の数が一桁〜二桁程度だと数分で切り替え、
A数百〜数千レベルだと数十分〜数時間で切り替え、
Bそしてまた再実行しファイルを読み込み@に戻る

初期の小さい規模ではSECTION数が数十個で、各SECTIONの数値の個数はせいぜい数百レベルなのでSECTIONの切り替えが頻繁に発生します。
そして@〜Bを回すのが数十分〜数時間くらいでそれをくるくる回します。
数ギガレベルになるのは終盤になってからです。

という感じなのでファイルの再生成が頻繁に行われ、かつGUIでマウスで改善していくので
マウスが手放せず解析表示もGUI操作が必須になる、という感じになっています。

小さい規模では特にSECTION切り替えが頻繁に発生するのでファイル分割で管理がわずらわしくなるのを避けたい。
まずここに重点を置き、そうすると大きい規模では読み込み時間がネックになるので高速化で対応しよう。
という状況で現在に至っているところでした。
0301 ◆QZaw55cn4c
垢版 |
2018/07/27(金) 00:13:35.77ID:dNDh2QHO
>>297
>ならあってもいいって事になるが、
そうではなく、すでに在るこのスレを放棄する必要はない、と主張したつもりですが
同様に、例のテンプレが張ってあるスレの存在下で、新たにテンプレなしの新スレを作る必要もない、と考えます
0302デフォルトの名無しさん
垢版 |
2018/07/27(金) 00:32:44.94ID:27BaLAkY
>>300
setlocaleは関係ない。setlocaleは、C関連の設定をすべて変えてしまうので、ここでは呼ばないほうがいい。

MultiByteToWideChar() で可能。
出力用のLPWSTR バッファは、スタックなりmalloc, new, std::vector<wchar_t> なりで確保したヒープメモリを使い、
受け取ったLPWSTR バッファの中身をCComBSTRのインスタンスにコピーするのがいいと思う。
0303デフォルトの名無しさん
垢版 |
2018/07/27(金) 00:44:14.53ID:wdZoBIJt
>>301
> そうではなく、すでに在るこのスレを放棄する必要はない、と主張したつもりですが
じゃあそう書けよドアホ
そしてその場合は285に安価しろ


まあとにかく、俺は新しくスレを立て直すことに賛成だ。
あのテンプレも機能してたと思う。
そして15GB君と半角キチガイには何も教えてやる気はない。

スレ住民が出来ることは、正答例を提示することのみであり、
今回はこれは複数人から十分為されている。
ゴミなのは質問者および半角キチガイ馬鹿だけであり、
ワッチョイが意図的に落とされたことにより荒らされていると懸念されるのなら、
このスレを破棄して新しくワッチョイスレでやり直すのは極めて妥当だ。

んで、ついでに正解提供者がHDDの速度について知らないようだから教えておいてやる。
サーバーのHDDは一般にRAIDになっており、スループットだけはいくらでも上げられる。
詳しくはググッた方が分かりやすいからそうしろ。
なお一般PCも今時はRAIDを標準装備しているが、
1. そもそも複数HDDを接続しない
2. マザー等HDD以外の故障の場合に余計に死ねる
ので一般PCでRAIDを構成することはあまり無い。
また、SSDが速いのはランダムリードであり、
シーケンシャルライト(ログ吐き)の場合はHDDの方が速かったりしたはず。

質問者と半角キチガイは死ねでしかないが、
正解提供者が疑問に思っていることがあれば、知ってれば答えてやるよ。
スレの質を上げる為に努力した奴らは報われるべきだと思うから。
今回は質問者が悪すぎた。これはご愁傷様。
0304デフォルトの名無しさん
垢版 |
2018/07/27(金) 00:49:14.72ID:X8KcH05s
オレが強いワケがないからな
クソニートどもがよわっちいだけだからな
クソニートどもが社会人に勝てるワケがない

クソニートどもがとてつもなく弱いワケ

その自覚がないのが恐ろしい
0305デフォルトの名無しさん
垢版 |
2018/07/27(金) 00:50:56.55ID:X8KcH05s
クソニートどもの戯言が正解だって()
身の程知らずもいいところ

クソニートどもはクソニートの狭い世界で
すべてが完結してるからな

その自覚がないから救いようがない
0306デフォルトの名無しさん
垢版 |
2018/07/27(金) 00:53:36.63ID:X8KcH05s
このスレに相談してくる人間は
クソニートのアドバイスなんか求めてないわけ?

わかる?

オレみたいなプロフェッショナルに回答を求めてるわけ
クソニートのテキトーな戯言なんかだれも求めてない

わかった?
0307 ◆QZaw55cn4c
垢版 |
2018/07/27(金) 00:54:58.75ID:dNDh2QHO
>>303
>あのテンプレも機能してたと思う。
根拠は?

>ワッチョイが意図的に落とされたことにより荒らされていると懸念されるのなら、
>このスレを破棄して新しくワッチョイスレでやり直すのは極めて妥当だ。
新しくスレを立てても、そのスレにて半角君や150G君が発言を継続するのであれば、事態は変わらないのでは?

月並みな話だけれども、単にスルー力が足りないだけなのでは?
5年、10年とスルーし続けることも必要な場合はあると思います
0309デフォルトの名無しさん
垢版 |
2018/07/27(金) 01:18:44.81ID:wdZoBIJt
>>307
なるほどお前とは話が通じないことは分かった。
お前が嫌われるのも納得だ。

> 根拠は?
先に「機能してなかった」根拠を提示してみろ。

> 事態は変わらないのでは?
ワッチョイがあればここまで酷くはならない、というのが彼の見方で、
俺もそう思う、ということ。

というかマジでお前話の内容について来れてないだろ。
無理して食いついてこなくてもいいぞ。邪魔でしかないから。
0310デフォルトの名無しさん
垢版 |
2018/07/27(金) 01:25:39.79ID:X8KcH05s
もうねクソニートが必死でしょ
すぐにクソニートなのはレスですぐにバレちゃうからな

コイツの脳内ではインフラとソフトウェアすら組織で分離されてないみたいだからな

クソニートの自作パチョコンの世界を
そのまま脳内で再現してる
0311 ◆QZaw55cn4c
垢版 |
2018/07/27(金) 01:33:55.71ID:dNDh2QHO
>>309
>先に「機能してなかった」根拠を提示してみろ。
私は「機能していた」とも「機能していなかった」とも主張していませんが
あなたは >>303 「機能していた」と判断しているのであれば、その理由もおしえていただけませんかね

>ワッチョイがあればここまで酷くはならない、というのが彼の見方で、俺もそう思う
ワッチョイは有効期限が長すぎるし ID とちがって専用ブラウザでの機能が充実していないからね…

私は ID で快適にスルーするべきものはスルーできていて無問題なんですけれどもね
0312デフォルトの名無しさん
垢版 |
2018/07/27(金) 04:56:28.85ID:/nUzesew
HTML出力を正解だと思ってるやつや
size_t使ってる場所で出るコンパイルエラー程度で「動くコード書けよ」とか
恥ずかしいこと言った上に、謝りもしなかった初心者が
偉そうに仕切ってるスレって・・・w
0315デフォルトの名無しさん
垢版 |
2018/07/27(金) 08:03:50.66ID:u6e3tzrN
ワッチョイがあればQz弾けるやん。
0317デフォルトの名無しさん
垢版 |
2018/07/27(金) 08:48:04.76ID:u6e3tzrN
>>316
このスレにはQzが粘着してるやん。
0319デフォルトの名無しさん
垢版 |
2018/07/27(金) 09:04:30.33ID:u6e3tzrN
>>318
テンプレは俺が荒らしたから出来たものだし、あのテンプレがあると俺は恥ずかしくて荒らせない。
そこら辺の経緯を知りたいか?
0323デフォルトの名無しさん
垢版 |
2018/07/27(金) 15:48:27.31ID:u6e3tzrN
すっぽん先生って誰だよ。
0325デフォルトの名無しさん
垢版 |
2018/07/27(金) 16:06:17.77ID:u6e3tzrN
禿のことかよ。
0326デフォルトの名無しさん
垢版 |
2018/07/27(金) 21:27:48.11ID:K5tMY89A
ターミナルでタブキー押すとディレクトリやファイル名が補完されますがプログラム上でそれを起こすにはどうやればいいのでしょうか
0327デフォルトの名無しさん
垢版 |
2018/07/27(金) 23:26:03.34ID:yQgFrYID
>>311
> 私は「機能していた」とも「機能していなかった」とも主張していませんが
ならまずお前が俺に絡んできた理由を教えろ。

といってもお前は相当のコミュ障のようだからどうせトンチンカンな答えになるだろう。
続けても意味無いから答えを書いておいてやる。お前には会話の常識がないんだよ。

既に言ったとおり、
> そうではなく、すでに在るこのスレを放棄する必要はない、と主張したつもりですが
なら俺にではなく、285に対してレス『しなければならない。』
そしてこの状況で俺に対して
> >あのテンプレも機能してたと思う。
> 根拠は?
と問いただすのなら、常識的にはお前は「機能してない」と思っていると仮定される。
逆に、この状況で単に
> 私は「機能していた」とも「機能していなかった」とも主張していませんが
という、単純に理由が知りたいだけだというのなら、それを明示『しなければならない。』
(それ以前に、普通に空気読める奴なら、不要不急な質問をここでは控えるが)

お前は相手に自分の意図が正しく伝わるように書けてない。
だから無駄に脱線して空回りし、話が進まない。だから嫌われる。
コミュ障の典型的パターンだ。「自分はそう言ってませんが」で全て通ると思っている。
そうじゃない。
意図を正しく伝えて会話を成功させる努力義務は相互にある。お前は全くそれが出来てない。
おかげで俺は無駄な話を書かされまくってる。大迷惑だ。


というわけでQZは話にならないのでとりあえず放置だ。
>>316
お前は当然「あのテンプレは意味無い」と思っているんだよな?
では逆に聞こう。
何故あのテンプレを剥がしたがっている奴がいるのだと思う?
0329 ◆QZaw55cn4c
垢版 |
2018/07/27(金) 23:48:50.60ID:dNDh2QHO
>>327
>そしてこの状況で俺に対して
(>>303)
>>>あのテンプレも機能してたと思う。
(>>307)
>> 根拠は?
>と問いただすのなら、常識的にはお前は「機能してない」と思っていると仮定される。

常識とはなんですか?
かりに、あなたのいうところの常識が妥当なものであったとしても、自分で「仮定」といっているんですよね?あくまでも仮定ですよね?
仮定というからには、仮定が成立しない場合もありうるんですよね?

私は、
>>303
>あのテンプレも機能してたと思う。

という結論を、どういう推論を経て導いたのかを聴きたかっただけなんですが。

>単純に理由が知りたいだけだというのなら、それを明示『しなければならない。』
どうして?
0330デフォルトの名無しさん
垢版 |
2018/07/27(金) 23:58:28.72ID:u6e3tzrN
>>329
テンプレがあると俺が荒らせないからに決まってんだろ。
0331デフォルトの名無しさん
垢版 |
2018/07/28(土) 00:02:12.95ID:jbwKRPPF
タブキーによる補完の仕組みは
compgenを調べればすぐに分かる

つまり
これこそ
ググレカス
0334デフォルトの名無しさん
垢版 |
2018/07/28(土) 02:09:39.90ID:cypKnBYi
>>329
回答は既に327に書いてある。
何度でも読み返せ。

>>328
まあお前らゆとりはその程度だとは思っていたさ。
おそらくお前の戦略は、俺が証明できないから無効だと言い張ることだろ。
だからこそ、お前らは先に言い出せない。必ず俺に先に言わせようとする。
それで、俺が証明できたら、どうするつもりだ?

実は逆説的だが証明自体は簡単なんだよ。
嫌がっている奴がいること自体が、効いてる証拠なんだ。
わかるか?

お前があのテンプレを剥がしたがっているしたら、例えばそれはお前にとって不快だからだ。
不快だと思う奴は、そういうスレに来ない、または来にくくなる。
本当に訳の分からないテンプレを貼られてたら、アウェイ感が出るだろ。
そしたら入って行きにくくなるだろ。

だから、積極的にテンプレを改変しようとする奴がいること自体、効いてる証拠なんだよ。
勿論>>1すら読んでいないゆとりレベルの馬鹿>>260には効かないが。

とりあえずかなり長いことあのテンプレは貼られていて、それで質は保たれてた。
最近積極的に剥がし、そしてワッチョイも剥がされてこのザマだ。
ここは元通りに戻して様子見するのが妥当だよ。
長期的影響を考慮できない馬鹿はここは黙って見ているべきなのさ。
お前らはすぐ老害老害と言うが、リアルはさておき、ネットは老害が蔓延れるほど歴史がない。
お前らはもう少し、己の無能さを自覚し、知識がない分野については自重する分別を持つべきだ。
0335デフォルトの名無しさん
垢版 |
2018/07/28(土) 02:10:55.23ID:cypKnBYi
2ch全体が、何故か「テンプレは不変」で纏まってるだろ。
俺はこの経緯/歴史は知らないが、可能性があるのは、
1. 全員がテンプレの効果を理解できる知能があって、自然にそうなった
2. どこかで話し合いがもたれて、そうなった
3. 試行錯誤され、結果的に遺伝的アルゴリズムの淘汰により、そうなった
の3つだ。
ひろゆきは「昔は賢い人しかいなかった」と言うから1だと主張するかもしれんが、
俺はこれはさすがにあり得ないと思う。
>>267みたいに無駄に噛みつきまくる馬鹿な奴は、どこにでも居るから。
(噛みつくのではなく、投稿内容で知識レベルを示すべき)
さりとて2ももっとあり得ないから、おそらく3だと思っている。
つまり、テンプレにいちいち不満があるからといって改変許可していると収拾がつかず、
結果的にそういうスレは質が下がり淘汰されてきたと見ている。
そして2ch全体がそう染まったと。

俺自身は「嫌なテンプレを作る」のも効果がある、という考えだ。
それをいちいち外されるようでは駄目なんだよ。効果が無くなるから。
そして、その効果が無くなる=テンプレを自由改変するスレは淘汰されてきたと見ている。

とはいえ、お前らはこれでは納得いかないだろう。
なら、スレ割って実験してみればいいだけだ。単純な話だ。
>>285の言うとおり、ワッチョイ付きで立て直せばいい。
そしてテンプレがいると思う奴は、投稿すればいい。少なくとも前スレ136まではそうだった。
逆にテンプレが要らないと思う奴はこのスレを引き続き盛り上げればいい。
俺はワッチョイ+例のテンプレ付きのスレにしか投稿しないことを約束する。
それでどっちが盛り上がるか勝負すればいい。分かりやすい話だ。
また逆に、これを避けること自体もまた、
「勝てる自信がない」という意味でテンプレが有効だと裏付けていることに気づけ。

ということでいいかね?
何なら俺がスレ立てて割ってやるよ。それで勝負すればいいだけだ。
断る理由も、お前らにはもうないはずだ。
0336デフォルトの名無しさん
垢版 |
2018/07/28(土) 02:13:26.66ID:cypKnBYi
なおあれは俺が作ったわけではない。
俺も当初意味不明なテンプレだと思ったが、しばらくすると、
確かにあのテンプレはこのスレの状態を極めて的確に表していると気づいた。
つまり、あれを「クスッ」っと感じれる奴だけ集まれ、ってことだ。
お前らがあれを剥がしたがっているのは、違和感ありまくりだからだろ。
その「違和感」こそが、効いている証拠なんだよ。分かるか?

ただこの際、効いている効いてないは大した問題じゃない。
スレ割って、両方のスレがお互いに競うことが重要であり、それが直接的にスレの質の改善に繋がる。
だから、やればいいだけの話なんだよ。


>>333
ワッチョイ無し例のテンプレ無しなら、このスレを使え。
新しくテンプレが欲しいのなら、みんなで話しあって立て直すんだね。

それが妥当と思えなければ、俺が従来通りのスレを立てて様子見してやるよ。
0337デフォルトの名無しさん
垢版 |
2018/07/28(土) 03:02:15.88ID:kbWsXNPG
主観的、思い込みだらけでなんの根拠も示せてない。やり直し

あとワッチョイについてなくても無問題と言ってるのはQzだけだ
0338デフォルトの名無しさん
垢版 |
2018/07/28(土) 06:57:01.71ID:dOqiqC/T
IDは日毎に変わってしまうので自分の発言を見直したい時に不便。
ワッチョイ便利よ。
0339デフォルトの名無しさん
垢版 |
2018/07/28(土) 07:46:05.56ID:PxykokRm
>>337
まあどうせそう連呼するとは思っていた。
ならスレ割って証明するしかない。
勿論反対はしないよな?

とりあえず数日様子見して、話が纏まらないなら俺がスレ立てるよ。
それまでに、「機能してない」と主張する奴は「例のテンプレがある」スレには投稿しないと約束してくれないかね?
俺の逆で。
それで勝負だ。
「例のテンプレ」を支持する集団と、剥がしたい集団で、
どっちがマトモにスレ運営できるか、白黒つければいい。


>>329
QZ、お前もな。
ここまで絡んできて、僕は質問しただけです、は通らないぞ。
旗幟鮮明にしろ。
0343デフォルトの名無しさん
垢版 |
2018/07/28(土) 10:14:13.47ID:jbwKRPPF
メタプログラムとかにしたら絶対ダメだ
知恵遅れなんかがここぞとばかりに
テキトーなこと書き込めるからな

メタプログラムとか知恵遅れが一番参入しやすい

このスレがなんで低学歴知恵遅れが多いか
その理由がココにある
0344デフォルトの名無しさん
垢版 |
2018/07/28(土) 10:17:09.09ID:jbwKRPPF
まじめに議論したいなら
まずクソニートや低学歴知恵遅れ
そして底辺ITドカタをこのスレから排除すること

まずこっから
0345デフォルトの名無しさん
垢版 |
2018/07/28(土) 10:18:48.83ID:jbwKRPPF
つまり
バカは書き込み禁止
0346デフォルトの名無しさん
垢版 |
2018/07/28(土) 10:20:31.04ID:jbwKRPPF
このスレはバカの自覚がないバカが多い
だから絶対にバカが治らない
一番たちがワルイ

排除するのが一番

そういうことだ
0347baka
垢版 |
2018/07/28(土) 10:32:02.99ID:nSNyoduL
メタプログラムはダメだ。つまりマクロは使用禁止!
0348デフォルトの名無しさん
垢版 |
2018/07/28(土) 10:36:30.00ID:TrbWuBTr
>>346
ご高説ごもっともです 深く感じ入りました 
以降も発言を注視させていただだきたいと思いますので
お手数ではありますが 固定酉をつけていただけませんか?
ご勘案のうえ ご配慮いただけますようお願いいたします
0349デフォルトの名無しさん
垢版 |
2018/07/28(土) 10:37:15.94ID:jbwKRPPF
テンプレ

 このスレは質問や相談にプロフェッショナルが答えます
 クソニート、低学歴知恵遅れ、底辺ITドカタの回答の書き込みはお断り

コレでいい
0350 ◆QZaw55cn4c
垢版 |
2018/07/28(土) 10:38:14.68ID:AqK1vkX7
>>339
>旗幟鮮明にしろ。
人間の集団を敵か見方かのいずれか一方に分ける、という人間が自然に持っている心理的限界を常に自覚しなければならないのです
0353デフォルトの名無しさん
垢版 |
2018/07/28(土) 12:02:16.12ID:GDMb2Dkw
>>350
相変わらずお前は話が通じないな。
そして論点そらしか。お前もいつの間にパヨクになったんだ?

質問を変えよう。
お前は例のテンプレについて、「機能している」と思うのか、「意味無い」と思うのか、どっちなんだ?
>>295を読んだら「意味無い」と思っていると捉えられるのが普通だが、
お前的には違うつもりなんだろ。
ならさっさと答えろ。
ここまで絡んできて、まさか自分の意見がないとか、あり得ないよな?
0354デフォルトの名無しさん
垢版 |
2018/07/28(土) 12:19:46.53ID:aLrZyGnX
相手と話をしたいなら、普通は表現に配慮するものだ
職場や学校でいつもこうやって相手にけんかをふっかけているのかな?
0356デフォルトの名無しさん
垢版 |
2018/07/28(土) 12:48:42.42ID:jbwKRPPF
このスレの低学歴知恵遅れは
表現の配慮以前に質問者つまり相手がいってることを理解できないからな
当然、コミュニケーションは成立しない
それ以外にもイロイロなものが欠落している

知能に著しい欠陥があると同時に社会性もない
クソニートヒコモリ特有のレスパターンといっていい
2ちゃんねるにうじゃうじゃいる登校拒否児になったまっま高齢クソニートになったようなヤツのレスパターンそのまんまだからな
精神的にも幼い

で、質問内容となんの関係もないなんの役にも立たない自分が知ってるしょうもないどーでもいいこと(つまり情報価値ゼロ)を
スレに書き込んでオナニーしてるワケ

つまりな社会と接点のないこのスレのクソニートはコレで社会と接点がもてたと錯覚してるワケ

カンペキなプロファイリングをするとこうなる

そうクソニートヒキコモリはどんだけ自分がゴミでクズな存在かその自覚をもてる日はこない
だからクソニートヒキコモリはずっと引きこもってる

結論はこうなる
0358デフォルトの名無しさん
垢版 |
2018/07/28(土) 12:56:10.15ID:jbwKRPPF
図星なんだろ
素直になりなさい

クソニートがまともな社会生活を送ってる人間に
勝てるワケがない

クソニートはどんだけ自分がゴミでクズなのか
その自覚をもつのが先だからな
0360デフォルトの名無しさん
垢版 |
2018/07/28(土) 13:00:33.92ID:jbwKRPPF
今回質問してたヤツとコミュニケーションが成立してたのは
オレだけだったからな

その事実がすべて物語ってる

クソニートしかいないこのスレから
クソニートを排除するのが先というのが
よおく分かったからな
0363デフォルトの名無しさん
垢版 |
2018/07/28(土) 13:04:24.13ID:jbwKRPPF
オレはクソニートをこのスレから排除する
クソニートの居場所はもうない
0364デフォルトの名無しさん
垢版 |
2018/07/28(土) 13:07:50.50ID:oI8u94+S
>>343
ETについてここに色々書いたことある者だけど
ドヤりたいだけの馬鹿は確かに多い(ここに限らず)、けどそういうやつは見たらわかるよ
真面目にやってる人もたまにいるから一緒くたに否定しないでくれ
0365デフォルトの名無しさん
垢版 |
2018/07/28(土) 13:09:01.74ID:VyODD4HS
プッシュ型スキャナー/パーサーについて考えよう。
0366デフォルトの名無しさん
垢版 |
2018/07/28(土) 13:09:51.96ID:aLrZyGnX
面接官に「お前とはコミュニケーションが成立しない!」と罵ってしまったとか
0367デフォルトの名無しさん
垢版 |
2018/07/28(土) 13:11:52.48ID:oI8u94+S
ただ俺も、まともにメタプログラミング実用してない癖に「今時のC++はメタプログラミングが主流」みたいな頭悪い大嘘ぬかす馬鹿は
ここから出て行くどころか今すぐプログラミングを辞めてほしいわ
どれだけ周囲に迷惑かけ、C++の発展を邪魔してるのか自覚してほしい
0377デフォルトの名無しさん
垢版 |
2018/07/28(土) 17:37:40.26ID:5Q2+6uj+
ここ、いつから身の上相談スレになったの。話題を変えたい。
EASTL使ってる人いる?
0378デフォルトの名無しさん
垢版 |
2018/07/28(土) 18:16:36.03ID:VyODD4HS
>>377
検索してみたけど、C++17で良いのでは?
足りなければBoostで。
0379デフォルトの名無しさん
垢版 |
2018/07/28(土) 19:26:09.04ID:jbwKRPPF
このスレのクソニートどもは
C++とかいってる前にな
自分の将来を心配したほうがいいわ
0380デフォルトの名無しさん
垢版 |
2018/07/28(土) 19:27:00.82ID:jbwKRPPF
バレてないと思ってるかもしれないけどな
チョンバレなワケ
0382デフォルトの名無しさん
垢版 |
2018/07/28(土) 19:28:10.66ID:jbwKRPPF
まず邪魔なクソニートを排除するのが先だ
0383デフォルトの名無しさん
垢版 |
2018/07/28(土) 19:35:03.00ID:jbwKRPPF
低学歴がいくら低学歴を隠そうとしても
書き込みですぐにバレる
クソニートはいくらクソニートを隠そうとしても
書き込みですぐにバレる

残念なことにな

当然、本人たちはそれに気付くことはできない
バレてないと思ってるのは本人たちだけだからな
0385デフォルトの名無しさん
垢版 |
2018/07/28(土) 20:28:07.43ID:k9DVhb8p
まあとにかく予定を言っておく。

俺は8/1以降に『完全に従来通り』のスレを立てる。
つまり、ワッチョイあり、例のテンプレあり、スレタイも不変で、part138とする。
従来スレがいいと思っているのならそれ以降このスレ廃棄で合流しろ。

あのテンプレが気に入らない等、従来スレよりも良いスレが作れると思っている奴らは、
可能であればそれ以前にこのスレで話しあって、ワッチョイ、テンプレ、スレタイ等も決め、
新しいスレを立ててそっちに移住しろ。
それでその新しいスレが賑わい、従来スレが過疎って落ちるようなら素晴らしい。

この方式(フォーク)の特長は、誰も損をしないことだ。
最悪、従来通りのスレは手に入る。
上手く行けばそれよりよいスレが手に入る。
この手の争いはフォークで解決すべきだというのが、OSS界隈では常識でもあるし。

Part138が存続している限り、俺は君たちが新しく立てたスレには投稿しない。
これは約束する。
俺は君たちにはスレ運営能力なんて無いと思っているが、
もし君たちの新しいスレが成功すれば、俺が過小評価していただけであり、
これくらいのペナルティは受けるべきだ。

ただし逆に、新しいスレを立てた連中は、少なくともそのスレが存続している限り、
従来スレには来るべきではないとも思っている。
これがフェアというものだ。これは君たちの自己に対する過大評価へのペナルティとなる。
だからQZにもその点を問いただしている。

当たり前だが、自由には責任がつきまとう。
お前らが成人しているのなら、自分の行動には責任を持て。
どっちに付くかは自由、したがってその結果がどうなろうとも全てお前の責任だ。
0387デフォルトの名無しさん
垢版 |
2018/07/28(土) 21:01:08.20ID:5Q2+6uj+
EASTLをVS2017とwsl+gccで試した限りでは、あまり速度面でのEASTLの恩恵はない。
EASTLを使うと、知らないうちにstdのSTLに依存してしまっているコードに気づける利点があるといえばある。
0388デフォルトの名無しさん
垢版 |
2018/07/28(土) 21:08:19.59ID:VyODD4HS
依存するとまずいの?
0389 ◆QZaw55cn4c
垢版 |
2018/07/28(土) 21:10:24.75ID:AqK1vkX7
>>385
スルー力が不足しているだけなのに、また余計なことを…
0390はちみつ餃子 ◆8X2XSCHEME
垢版 |
2018/07/28(土) 21:13:34.68ID:36Xz3wmQ
>>340
複数の端末を使っている場合は専ブラを使ってても自分が投稿した投稿を統一的に管理できない。
出来る専ブラもあるんかな?
0392384
垢版 |
2018/07/28(土) 21:18:22.83ID:oI8u94+S
>>386
すでに言われてるけど最近のコンパイラと最近のC++なら当時の速度面でのデメリットは結構解消されてるだろうし
ゲーム専用機向けの最適化がなされたものをコンパイラも優秀なPCで使う意味があるのかなと思ってね
まぁ両方を眺めるのはもちろん勉強になるだろうけど
0394デフォルトの名無しさん
垢版 |
2018/07/28(土) 21:40:05.17ID:nhKIzNwX
>>385
結局自分が気に食わない奴らは出てってもらってスレ継承させないと言ってるだけに聞こえるが。
自分の意見がそこまで正しいと信じているなら、part138とせずに新たに1から振り直したスレを作ったらどうなんだ?
きっと賛同者がついていってくれるよ。
0395デフォルトの名無しさん
垢版 |
2018/07/28(土) 21:41:26.83ID:VyODD4HS
ここははちみつ餃子さんに一任しようではないか。
0397デフォルトの名無しさん
垢版 |
2018/07/28(土) 22:05:04.32ID:VyODD4HS
5chって投票所無かったっけ。
0398 ◆QZaw55cn4c
垢版 |
2018/07/28(土) 22:10:16.83ID:AqK1vkX7
>>397
「一人一票」を技術的に実現できないから無意味
0399デフォルトの名無しさん
垢版 |
2018/07/28(土) 22:20:07.96ID:aLrZyGnX
実住所と氏名を晒し、郵送による本人確認、
投票用紙を送り、記名投票を実施する
0400 ◆QZaw55cn4c
垢版 |
2018/07/28(土) 22:25:17.35ID:AqK1vkX7
>>399
なるほど
メールアドレスを晒して、というのはアリかもしれない
0401デフォルトの名無しさん
垢版 |
2018/07/28(土) 22:27:16.84ID:K0euPiC+
あーまあいいや、ちゃんと回答する気になったから書いておいてやる。
なお396は俺な。


>>394
良くも悪くも、俺が立てるスレは『完全に従来通り』だからそのままで行く。

> 結局自分が気に食わない奴らは出てってもらってスレ継承させないと言ってるだけに聞こえるが。
お前も相当のアホパヨクだな。
俺が言っているのは、『従来通り』が嫌な奴は出て行って新スレを作れ、
もしそのスレが成功するならフォーク成功だ、ということ。
『自分が気に食わない奴ら』ではない。
そういうところがお前みたいなパヨクの駄目なところだ。
反対の反対になっているし、論点のすり替えを平気で行っている。

こういう、強制力を発動できないところで意見対立した場合、
現行はフォークで決着するしかない。だからそれを行う。
お前に良い案があるなら堂々とフォークすればいいし、そのブランチに賛同者は付いていくだろう。
俺は特に改善点を持ち合わせていないので、従来側のブランチは俺が担当する。


>>397-398
相変わらずQZは回答なしか。お前も相当ずるい奴だな。
まあそれはさておき、
> 一人一票
ってのは仮に実現できたとしても意味がない。
フォークが成功するかどうかは、アクティブコミッターをどこまで獲得できるかであって、
つまりここで言うと正しく回答できる奴、それは実力と時間も含めて、がどれだけどちらに付くか、
そして結果的にどちらのスレの方がマトモに機能するかであって、
ROMの票があったところで意味がないからだ。
だからスレ割ってどちらが繁盛するかがつまり投票なんだよ。それがフォーク。
0402デフォルトの名無しさん
垢版 |
2018/07/28(土) 22:28:51.81ID:jbwKRPPF
やっぱりなクソニートの書き込みってすぐに分かるわ
0405デフォルトの名無しさん
垢版 |
2018/07/28(土) 22:45:34.04ID:jbwKRPPF
パヨチョンもクソニートも邪魔

排除が適切
適切な排除が必要
0406デフォルトの名無しさん
垢版 |
2018/07/28(土) 22:48:36.99ID:XeXUtcmE
>>401
結局テンプレの必要性は証明できないのに従来通りだからで押し切るつもりか。
スレ分割したら従来タイトルとスレ番継承したほうが圧倒的に有利なのは明らかだろう。なんの検証にもならない。馬鹿なんじゃないか?
0407デフォルトの名無しさん
垢版 |
2018/07/28(土) 23:21:40.03ID:VyODD4HS
>>406
テンプレが出来た経緯を知ってるか知らないかだろな。
0408デフォルトの名無しさん
垢版 |
2018/07/28(土) 23:23:14.22ID:K0euPiC+
>>406
少なくともアクティブな奴はここを読んでいて経緯は知ってる。
さらに8/1迄の先行件を与えている。
それ以上何が欲しいんだ?

従来通りなんだからスレタイとスレ番は継承するに決まっている。
新しいスレが同じスレタイとスレ番なら紛らわしいだけだ。
見た目分かるように何か変えろ。それは後発の義務だ。

お前が納得してない「テンプレの必要性」を俺はフォークで証明すると言ってるんだよ。
だからお前があのテンプレが悪い方向に寄与すると主張するのなら、
それを外せば勝手にスレは改善し、みんなそっちについて行くんだろ?
試してみろよ。

お前自身が「俺が気に入らないことをやるな」と言ってるだけなんだよ。
お前の考えが正しいことは、お前自身が説明しろ。
そしてどちらのスレが使われるかが、投票になる。
非常に民主的に決まる、良いやり方だと思うぜ、フォークは。

或いは他に良いやり方があるというのなら、提案してみろ。
俺は俺なりの説明はした。
あれで納得いかないのならどうやっても平行線だと分かっているから、
俺はフォークしかないと判断している。
お前は結局文句言ってるだけだ。


というかこの話も同様に平行線なので、もうこれくらいでいいか?
いずれにしても俺は8/1以降に『完全に従来通り』でスレ立てる。
それをどう捉えるかは君らが決めることだ。
0409デフォルトの名無しさん
垢版 |
2018/07/28(土) 23:23:17.95ID:VyODD4HS
争いとは無縁そうなはちみつ餃子さんに仕切ってもらえばいいんじゃないのか。
0410デフォルトの名無しさん
垢版 |
2018/07/28(土) 23:28:59.65ID:aLrZyGnX
従来通りで良いなら、こんな大騒ぎしなくて良いだろう
いつものようにスレを使い切りそうになってから立てる
住民も変わらない。内容も今まで通り
これに不満な奴は、己の作りたい趣旨にそって
新しいスレを立てれば良いだけ
0411デフォルトの名無しさん
垢版 |
2018/07/29(日) 00:45:26.42ID:j115Aqon
>>410
> こんな大騒ぎしなくて良いだろう
お前がな。

俺は従来通りで立て直そうとしている。
必死に抵抗しているのは、例のテンプレを相当嫌っている奴か、
ワッチョイがあったら困る奴だろ。
従来通りでいい奴は、反対する理由がない。
0412デフォルトの名無しさん
垢版 |
2018/07/29(日) 00:52:42.16ID:Yg/enGwg
テンプレ登場人物で煽ったやつが俺なんだが、もしかして煽られた奴もここにいるのかい?
0413デフォルトの名無しさん
垢版 |
2018/07/29(日) 00:55:43.16ID:uqiXbB1D
>>408
こっちはそんな条件じゃなんの検証にもならないと主張しているのに、フォークで証明すると繰り返すばかり。もはや反論になってない。
結局"おまもり"の有効性なんて証明できるわけがないから公平なふりして無理やり押し通そうとしている。
非論理的で話にならん。
0415デフォルトの名無しさん
垢版 |
2018/07/29(日) 01:04:47.05ID:fkvLqjPx
c++やってるやつは案の定融通の利かない頭きちきちの奴ら何だろうな
テンプレがどうしたって言うんだか
0416デフォルトの名無しさん
垢版 |
2018/07/29(日) 01:06:57.02ID:1hBCvnSx
>>411
ワッチョイ付きでいいよ。賛成する。
それが従来通りって意味であってる。
これでいい?
0417デフォルトの名無しさん
垢版 |
2018/07/29(日) 01:11:44.35ID:fkvLqjPx
どの板でもスレの立て直しはたまにある
でも、余程理不尽なことがない限り新しいスレに人は移動しない
テンプレがないとかスレの番号が間違っているとかいう理由で人は移動しない

嵐が変なテンプレをつけたりおかしなスレタイに改変されてたら移動するぐらい
0418デフォルトの名無しさん
垢版 |
2018/07/29(日) 01:41:26.98ID:Yg/enGwg
ぶっちゃけどっちでもいいしどうでもいいんだけどね。
0419はちみつ餃子 ◆8X2XSCHEME
垢版 |
2018/07/29(日) 03:10:55.83ID:bQEgGaK2
>>409
争ったら駄目なんだよ。 交渉すべき。
だが、どうせこういう手合いは何を言っても聞きゃしねぇから無駄。
0420 ◆QZaw55cn4c
垢版 |
2018/07/29(日) 06:18:22.84ID:bwtbjTxx
>>413
そうそう、キーワード「お守り」「非論理的」、いいですねえ
0421デフォルトの名無しさん
垢版 |
2018/07/29(日) 07:02:10.69ID:8jVIjsgO
>>413
>>419
>>420
ではお前らなりに論理的に検証になる方法を提案し、実行しろ。
「出来ないから出来ない」というのは止めろ。

>>417
元々はワッチョイの話だったのに、
都合が悪くなったからといってテンプレのみの話にすり替えるのは止めろ。

>>416
従来通り=ワッチョイあり、例のテンプレは2に投下。
part136の1+3相当。
0423デフォルトの名無しさん
垢版 |
2018/07/29(日) 11:44:38.77ID:LQAkWqzt
クソニートを駆除するために
はよバルサン焚けよ

こいつら害虫だからな
0424デフォルトの名無しさん
垢版 |
2018/07/29(日) 11:51:12.53ID:LQAkWqzt
ちなみに知恵遅れどものテキトーな回答のどこがおかしいか
オレはすべて回答してる
0425デフォルトの名無しさん
垢版 |
2018/07/29(日) 12:37:46.37ID:Yg/enGwg
プッシュ型スキャナ/パーサーはつなぎこみが楽だし、C++のテンプレートで使いやすい。
C++ Wayの一つとして研究されていいはず。
0426デフォルトの名無しさん
垢版 |
2018/07/29(日) 13:09:38.19ID:Yg/enGwg
Qiita落ちてる?
0428デフォルトの名無しさん
垢版 |
2018/07/29(日) 16:40:38.92ID:Yg/enGwg
雑談も桶になるといいよな。
0429 ◆QZaw55cn4c
垢版 |
2018/07/29(日) 17:23:58.49ID:bwtbjTxx
>>353
>お前もいつの間にパヨクになったんだ?
これは興味深い、>>350 のどこに、パヨク=馬鹿左翼、を感じたのか、ちょっと教えていただけませんでしょうか?
0430デフォルトの名無しさん
垢版 |
2018/07/29(日) 20:05:51.80ID:L9bR4BuX
C++掲示板も終わりか。

糞なくせに自己主張だけは一人前のお坊ちゃまばかり。
メスもいるだろうが...

あんまり糞な事言ってると、後はわかってるだろうな
0432デフォルトの名無しさん
垢版 |
2018/07/29(日) 20:13:22.07ID:LQAkWqzt
クソはただのクソ袋
コイツラはただのウンコ製造機だからな

レス見ればすぐに分かる
0433デフォルトの名無しさん
垢版 |
2018/07/29(日) 20:15:29.45ID:LQAkWqzt
クソニートどもがなんで
こんなしょうもないスレの存続で必死なのか分かるだろ

居場所がココしかないから
現実逃避の場所がココだけだからな

簡単簡単
0434デフォルトの名無しさん
垢版 |
2018/07/29(日) 21:17:20.23ID:UevmDhbi
イカれを演じて暴言吐いてないと日常の不安に耐えきれないんだろうな……
なんかひどく可哀想な人だ……
0435デフォルトの名無しさん
垢版 |
2018/07/30(月) 00:40:10.37ID:yV+7/MBa
デストラクタで
型Tのメンバ変数Aのデストラクタ(cout等記述)が呼びされるはずなのに
型Tのメンバ変数Aと同じアドレスを持ったデストラクタ(解放だけ行う)が呼びされるんだが
こんなバグ何が原因かわからないんだ助けてください

もちろん型Tのデストラクタは一種類しか宣言してないし
virtualもつけてるんだが…
0438デフォルトの名無しさん
垢版 |
2018/07/30(月) 08:41:35.39ID:qnQc5JET
C++で今まで作ったものってなんですか?
自分はとにかく競プロしかしてないので、なにか作りたいんですけどC++という言語でしかできないことがあまり思いつかなくて
0441はちみつ餃子 ◆8X2XSCHEME
垢版 |
2018/07/30(月) 14:21:10.33ID:pFBrx3WW
>>438
「できること」という意味では C と大差ないわ。
でも、プログラムの部品 (ライブラリ) に高度な抽象化を被せることが出来る。
要するに高レイヤでは楽できる可能性が高い。

レイヤを分ける必要もないような小さなプログラムでは
ありがたみを感じにくいかもね。
0442デフォルトの名無しさん
垢版 |
2018/07/30(月) 19:42:11.85ID:qnQc5JET
>>441
ありがとうございます
確かにC++はそういう要素大きいですよね!
そこがいい部分で好きなんですけど、やっぱり難しい部分ですよね
0443デフォルトの名無しさん
垢版 |
2018/07/30(月) 21:47:15.09ID:hbo0m8kQ
上のほうで、唇がメンタイコの欲深そうなのがいるな。

2chに引っ込んでいろや。屑が
0444デフォルトの名無しさん
垢版 |
2018/07/31(火) 20:27:14.08ID:jvSfH+BG
たらこじゃなくてか。
0446デフォルトの名無しさん
垢版 |
2018/07/31(火) 22:24:08.58ID:jvSfH+BG
そっかw
素で辛子明太子と間違えたわ。
0447デフォルトの名無しさん
垢版 |
2018/08/01(水) 00:24:00.80ID:VquDbSfz
アルゴリズム辞典みたいなものを手元に置いときたいんだが、最も支持されてるのってどれ?


・網羅性が高い
・支持されている(売れている)
・日本語版がある
・コード例はあってもなくても良くて、あるとしたら C/C++ か擬似コードで
という条件で
テーマ別に「どれとどれとどれを持っとけばまず問題ない」という言い方でもありがたい
とにかく網羅性を重視してる
0448デフォルトの名無しさん
垢版 |
2018/08/01(水) 00:35:56.57ID:/iJJIMGp
会社でC++書くことになったんですがコードが(ダブル)ポインタの嵐で読みにくいことこの上なくて辛いです
他にもstring使わずにchar配列だったり、vector使わずに配列だったり
Cのスタイルで書ける部分はできるだけCのスタイルで書くほうがやはり好まれるものなのでしょうか
前に個人でちょろっと書いたときはもうポインタ使わなくて済むならできるだけ使わないように!なんて思いながら書いてたんですが
0449デフォルトの名無しさん
垢版 |
2018/08/01(水) 00:42:34.65ID:hfBYO5dB
色々な事情があるのかも

Cからの移植とか

小規模だとヒープはトラブルの元なので極力使わないとか
そもそもヒープが無いとか
0450デフォルトの名無しさん
垢版 |
2018/08/01(水) 00:56:47.14ID:8dN6QsuX
>>448
ポインタ使わなくてもイテレータの嵐を渡り歩いたり
スマートポインタが何をしているのかを理解するには
ポインタを使う場合のノウハウ知識が必須だよ

stringやvectorを避けている箇所にはそれなりの理由があるから
極力思い込みを排除して状況をよく見たほうがいい
0451デフォルトの名無しさん
垢版 |
2018/08/01(水) 01:01:22.52ID:uLizLGZM
>>447

合計\7,000--

珠玉のプログラミング 本質を見抜いたアルゴリズムとデータ構造 | ジョン・ベントリー, 小林 健一郎 |本 | 通販 | Amazon
ttps://www.amazon.co.jp/dp/4621066072

O'Reilly Japan - アルゴリズムクイックリファレンス 第2版
ttps://www.oreilly.co.jp/books/9784873117850/

C言語による最新アルゴリズム事典の詳細情報 : Vector ソフトを探す!
ttps://www.vector.co.jp/soft/data/prog/se002453.html
0452デフォルトの名無しさん
垢版 |
2018/08/01(水) 02:12:56.94ID:VquDbSfz
>>451
ありがとうございます。
最初のも辞典的なものなんでしょうか。

複数冊持つならばテーマ毎が良いかなとも思いましたが、特定のテーマに集中したものだと翻訳されているものが少ないのかもしれませんね。
2つ目と3つ目が部分的に補完しあっていることを期待して、両者とも購入しようかと思います。
0453デフォルトの名無しさん
垢版 |
2018/08/01(水) 02:19:31.07ID:Bdxs44t0
the art of computer programming
numerical recipes

コレしかないわ
0454はちみつ餃子 ◆8X2XSCHEME
垢版 |
2018/08/01(水) 02:25:19.38ID:oNWxQcbM
>>451
「C言語による最新アルゴリズム事典」はこないだ改定されて「C言語による標準アルゴリズム事典」という表題で売ってるぞ。
http://amzn.asia/cgZYRrQ
ロングセラーになりすぎたせいで「いつまで最新やねん」というのは常々言われづづけてたからなぁ。
0455デフォルトの名無しさん
垢版 |
2018/08/01(水) 02:49:17.77ID:GZaAdjmn
>>448-450
多分そいつは、Scott Meyers を知らないし、
ほとんどの言語に「Effective 何々」があることも知らないのだろうw

そいつに、Scott Meyers を知っていますかって聞けば?
プロで、江添亮とかScott Meyers を知らん奴は、いない
0457デフォルトの名無しさん
垢版 |
2018/08/01(水) 07:00:43.17ID:0Pfosj1X
stringやvectorはヒープなので、呼び出し回数の多い関数で毎回インスタンスを作る場合は処理時間に注意したいところ。
0458はちみつ餃子 ◆8X2XSCHEME
垢版 |
2018/08/01(水) 07:02:13.71ID:oNWxQcbM
まあ状況によるわなー。
後から伸長 (または縮小) が必要ないような固定長のデータを std::vector に入れるのは豪華すぎるので、
避けれるなら避けたいということは有りうる。

それでも今どきなら std::array を使って欲しいけど、
古いプログラムをツギハギしながら使ってるような場合にはなかなかそうもいかない事情があるのかもしれん。

単純には判断できないので、わかんないことはそれを書いてるやつに聞けとしか言いようがないんじゃない?
0459デフォルトの名無しさん
垢版 |
2018/08/01(水) 07:40:49.09ID:OccwPm6d
stl使うと同バージョンのライブラリを実行環境にインストールするという考慮も増える
0461デフォルトの名無しさん
垢版 |
2018/08/01(水) 18:55:57.40ID:4hR5DucF
やっぱり通になると、明太子ひとつ、辛子抜きで・・・とか注文するんだろな。
0465デフォルトの名無しさん
垢版 |
2018/08/01(水) 20:37:51.59ID:/iJJIMGp
ポインタの件ですが参考になりました。まぁこっちはほぼ初心者で相手はベテランの上司なので何も言えない聞けないってとこですね
stackoverflowとか読んで生ポインタあんま使うなスマポ使えオブジェクト使えるときは使えみたいなこと書いてあるの見るとこれでいいのかなって思いますねええ
0466はちみつ餃子 ◆8X2XSCHEME
垢版 |
2018/08/01(水) 23:13:55.56ID:oNWxQcbM
std::unique_ptr は実行時の速度ペナルティもほとんどないので、避ける理由はあんまりないよな。
例外がとんだ時のロールバックについても面倒なことを考えなくて良いし。
0467デフォルトの名無しさん
垢版 |
2018/08/01(水) 23:34:41.68ID:GZaAdjmn
たぶん、Scott Meyers とか「Effective 何々」とか、知らんのだろ

たぶん正常に動作する、過去の資産を持っていて、それをコピーして使う作り方なのかも

現場でよくあるのは、サンプル欲しいと言うと、過去のソースコードを持ってきて、
これは動くから、そのままコピーして使って下さいと言われる

新しい事をしようと思うと、環境構築やらで、動かない部分が出てくるので、非常に面倒

それに過去のソースコードは、あちこちで使われているから、バグが少ないという実績があるけど、
新しく作ったものは、バグ出しが大変。
安定するまで、かなりの期間が必要

よほどの理由がない限り、新しく作らない
0468デフォルトの名無しさん
垢版 |
2018/08/02(木) 03:53:49.14ID:iSPNCiYK
>>451
どれか一つで良くね
ほとんど被ってるっしょ
あえて選ぶならアルゴリズムクイックリファレンス

網羅性ってヤツを追及するなら、同じようなもんいくつも買うんじゃなくて自分で言ってるようにテーマに特化したものを買うしかない
名前忘れたけど文字列アルゴリズムのアレとか
0470デフォルトの名無しさん
垢版 |
2018/08/02(木) 07:12:52.80ID:NSwKZwuS
圧縮アルゴリズムなんか、本で憶えたんじゃなく
FAXだとかモデムみたいな具体的なブツで憶えたな

その他のアルゴリズムも単行本より雑誌で
憶えたのが多いし
0472デフォルトの名無しさん
垢版 |
2018/08/02(木) 10:41:45.24ID:zFALVR92
>>468

これ?

高速文字列解析の世界――データ圧縮・全文検索・テキストマイニング (確率と情報の科学) | 岡野原 大輔 |本 | 通販 | Amazon
ttps://www.amazon.co.jp/dp/4000069748

「高速文字列解析の世界」サポートページ - daisuke.okanohara
ttps://sites.google.com/site/daisukeokanohara/iwanami_string_world
0473デフォルトの名無しさん
垢版 |
2018/08/02(木) 11:27:51.52ID:KhTk1OQU
そのジャンルは大体の場合は条件固定じゃないからツール類を使ったほうがいい
0477デフォルトの名無しさん
垢版 |
2018/08/02(木) 19:38:11.37ID:nAUx6Lke
C++極めたいんだけど、どうすれば極められる?
仕事はJavaScriptが主です
今はアルゴリズムの本読んでるのですが、個人的にはC++ドラフトの間違いを指摘できるレベルになりたいです
0480デフォルトの名無しさん
垢版 |
2018/08/02(木) 20:52:27.89ID:jf+aoeV/
>>478
いや実際C++使ってる職場少ないし、どうやってレベルを上げればいいのか分からん
オープンソースを読むくらいしか思いつかない
>>479
ジョークはいい
0484デフォルトの名無しさん
垢版 |
2018/08/02(木) 22:24:42.73ID:Ar8oKNDv
>>480
読んでばかりじゃなくて自発的に自分で実際に書いてみないことには、いつまでたってもたいして身に付かないだろう。
極めたいなら、言語仕様の一つ一つを実際に使ってみて具体的に役立つケースや制限、制約、限界を体感して、メリットデメリットを洗い出すくらいのつもりで試してみたら?
0487デフォルトの名無しさん
垢版 |
2018/08/03(金) 02:23:34.66ID:Ja3muTb1
自作ツールはまず、スクリプト言語でやってみて、速度面などで不満があった時だけC・C++に置き換えるのがいいと思うけどどうなの。
スクリプト言語とコンパイル言語の使い分けを覚える良い機会になる。
0489デフォルトの名無しさん
垢版 |
2018/08/03(金) 07:41:26.05ID:jYMqs03L
極めると言うても、次の規格が出たらもう過去の知識だし、
いくら頑張っても到達できないゴールのような気がするなぁ。
規格を作る側に入り込めるなら話は違うかも知れんが。

C++は、自分より後ろにいる人をバカにするのが好きな人も多い感じだけど、
「そんな奴にはならん方がええ」
0490はちみつ餃子 ◆8X2XSCHEME
垢版 |
2018/08/03(金) 08:11:10.53ID:KKWcqInB
ある程度の言語機能しか使わない範囲でも使い物になるように C++ は設計されてる。
ある程度を学めばその範囲内でも実務に使える。
もちろん深い理解があればプログラムをよりよく構成できるので、
実務に使いながら平行して段階的に学ぶということが出来る。
このことは設計者が著した D&E に書かれてる基礎理念のひとつだ。

地に足の着いた、現実的なものとして設計されてるんだよ。
だから、言語としての C++ だけに偏って学ぶのはお勧めできない。
言語として不格好な部分も現実の中では相応の合理性があったりして、
それを学習するのに適しているのは現実のプログラミングだと思う。

ただ、余談だけど、段階的に学べるようにというのはスタート地点として C を想定しているように思う。
C が当然の基礎知識としてあった時代には
そこからシームレスに C++ を学んでいけるように設計するのは妥当な選択だったかもしれないが、
今の時代には C++ の中の C の部分は色々と足を引っ張ってもいるので
歴史が長いと泥臭い部分も積み重なっていくものだなぁと思いました。 (小並感)
0491デフォルトの名無しさん
垢版 |
2018/08/03(金) 10:14:53.94ID:lq/KEYA1
20年近く使ってるけど、ドラフトとか目にしても
「こんな機能来るんや!」ってwktkするだけだな
規格を知ってれば極めてる、みたいな風潮が最近あるけど間違いやで
言語はあくまで道具だから使ってなんぼ
0492デフォルトの名無しさん
垢版 |
2018/08/03(金) 10:29:03.00ID:cfhQf2V5
みんな深いレスありがとう
ただ自分はどうしても諦めきれないので、仕事以外の時間は、C++に関するサイトや書籍やコーディングに費やすことになると思う
Pythonは学ぼうとは思ってるけどね
0493デフォルトの名無しさん
垢版 |
2018/08/03(金) 10:49:41.39ID:TY6Sib0f
ttps://github.com/python/cpython/tree/master/Python

今ならpythonのソースコードもオマケで学べるよ
0495デフォルトの名無しさん
垢版 |
2018/08/03(金) 15:41:42.81ID:Ja3muTb1
スクリプト言語には、ハッシュテーブルやディクショナリなどと呼ばれるキーと値の組を保存するコンテナ機能が存在する。
一般に高速とされるC++だが、実は、ハッシュテーブルだけはスクリプト言語の方がアクセス速度が速かった。
ただし、C++におけるstd::mapだけがハッシュテーブルに該当した頃の話。

今は、std::unordered_mapがあるのでスクリプト言語と同等以上の速度でハッシュテーブルにアクセス可能になっている。
0496デフォルトの名無しさん
垢版 |
2018/08/03(金) 18:32:37.47ID:j4paKoWq
mapはハッシュテーブルに該当しないだろ。
そういうときは辞書とかマップとか連想配列とかと呼ぶべきだ。
0499デフォルトの名無しさん
垢版 |
2018/08/03(金) 23:13:28.65ID:B+FOIxCl
クラス設計で悩んでいるんだが、みんなの意見を聞きたい
やりたいのは、いわゆるデザインパターン template methodを使ったクラス設計

class Parent {
public:
void execute() {
method1();
method2();
method3();
}
private:
virtual void method1();
virtual void method2();
virtual void method3();
}

子クラスのChild1, Child2でmethod1(), method2(), method3()をそれぞれオーバーライドして処理を分けている
ここで、Child3を追加しようと思うんだけど、method1()の内容はChild2::method1()と全く同じになる
これをどう実装しようかいろいろ悩んだんだが、どれもピンとこない。
そもそも最初の設計がおかしーんじゃねーの?とかこうしたらよくない?とかここおかしくね?とか意見あったら頼む
一応以下は自分が考えていること

@Child2, Child3の親クラスを抽出して、そっちに共通処理として書く
→実装のために継承関係を作るのはあまりよくない気がする
A別クラス(Utilクラス?)を作ってそっちにまとめる
→メンバ変数とか使ってると少し面倒かな。本質的でない気もする。
BChild3::method1()->Child2::method1()とコンポジション的にする
せっかく横のつながりができないようにしてるのに、ここでできるのはよくない
C親クラスに共通メソッドを作って、Child2::method1()とChild3::method1()はそれを呼ぶ
→しっくりこないけど、妥協点かな・・・
DしゃーないChild2::method1()コピペで!
→これはまあ論外かな、時間が全くないときの最終手段
0504デフォルトの名無しさん
垢版 |
2018/08/03(金) 23:36:56.13ID:xr+Hum6X
派生させるんじゃなくてメソッドの処理を別クラスにして移譲させるんじゃないの?
0505デフォルトの名無しさん
垢版 |
2018/08/04(土) 00:12:06.53ID:AH7fLvgn
>>499
> 実装のために継承関係を作るのはあまりよくない気がする
と言いつつ
> 親クラスに共通メソッドを作って、Child2::method1()とChild3::method1()はそれを呼ぶ
とか意味わからん
全然関係ないのにたまたま一緒になったと言うなら
> しゃーないChild2::method1()コピペで!
しかないと思うが
0506デフォルトの名無しさん
垢版 |
2018/08/04(土) 00:38:11.84ID:hQAAmMi0
コーディング規約で、引数や戻り値に参照型は使うな。わかりにくくなるから。ポインタで渡してポインタで返せ
ってことになってるんですけどこれ一般的な考え方なんですかね。生ポインタ使いまくりの方がよっぽどわかりにくいと思うんですけど
0507デフォルトの名無しさん
垢版 |
2018/08/04(土) 00:53:09.47ID:CpwGeL+S
そんなことよりメソッドでクラスのインスタンスが変更されない場合
そのメソッドにちゃんとconstつけろよ

引数でクラス使う場合も、そのクラスのインスタンスが変更されない場合
その引数にちゃんとconstつけろよ

わかった?
0508デフォルトの名無しさん
垢版 |
2018/08/04(土) 00:58:03.49ID:0clFfLhT
>>506
言ってることがわからなくはないが一般的ではないと思う
むしろ参照のほうが一般的な気がするな
0509デフォルトの名無しさん
垢版 |
2018/08/04(土) 01:05:30.18ID:Xh+3QD0k
引数については、読み書きする引数は注意をひくためにポインタ渡しにして、読み取りだけの引数は参照渡しにするといいのでは。
戻り値については、失敗したことを意味するNULLを使えるのでポインタのほうがうれしいかも。
0510デフォルトの名無しさん
垢版 |
2018/08/04(土) 01:06:58.94ID:QByQ49xB
>>499
execute が virtual でないってことは
Parentを基底にしてコレクションしなくてもいいってことでOK?

>>501 の言うように template で mixin 的に書いたら こんな感じになったー
https://ideone.com/CcRHnO
ChildがKlassになって兄弟関係がなくなってる
0511デフォルトの名無しさん
垢版 |
2018/08/04(土) 01:12:24.24ID:CpwGeL+S
戻り値なんか全部intでいい
0未満ならすべて一貫してすべてエラー
失敗がありえないブーリアンだけはかろうじてあり

引数をポインタで渡せないとNULLを渡して処理したい場合の処理ができない
そういうとき困るから全部ポインタで
0512デフォルトの名無しさん
垢版 |
2018/08/04(土) 05:12:55.60ID:iUNKVgUH
素人ばっかりかw
「More Effective C++」の項目1 だろ

Effectiveも読んでいない奴が、プログラミングやってるのが不思議。
どの言語でも、Effectiveは、入門書の次に読む本やぞ

参照は、確実にNULL じゃない場合。
また、参照に再代入はしない事
0515デフォルトの名無しさん
垢版 |
2018/08/04(土) 07:29:12.24ID:o+LfwS0J
cからのコードが多い場合は統一のために参照渡しにしないってのはあるかな。
0517デフォルトの名無しさん
垢版 |
2018/08/04(土) 07:42:44.96ID:Xh+3QD0k
たかが参照にストレスを感じるようになったら、C/C++プログラマをやめた方がいい。引退時。
0519デフォルトの名無しさん
垢版 |
2018/08/04(土) 08:29:49.29ID:Xh+3QD0k
私見を言わせてもらうと、多様性を受け入れ状況に合わせて柔軟に合わせていくのもプログラマあるいは技術者の重要なスキルなので、
一神教的な偏狭な人は若年性認知症とまで言ってのける気はないがかなり情報処理能力が低くなっているはずなので、プログラミングをやめた方がいい。
0520デフォルトの名無しさん
垢版 |
2018/08/04(土) 09:34:28.56ID:0uMuTyGR
プログラミングがどうこういうより国語を勉強しろ。
0521デフォルトの名無しさん
垢版 |
2018/08/04(土) 09:35:16.17ID:o+LfwS0J
柔軟なのと規約を決めないのはまた別だけどね。
多様性といって新しい言語使って同じ過ちを繰り返している人を何人も見てると
色々バカバカしくなるってところはある。
老害と同じくらい歴史を見ない若造も有害という現実を見るのも良い。
0523デフォルトの名無しさん
垢版 |
2018/08/04(土) 09:53:11.49ID:F7vd0ILk
老害なんて言っている奴、10年後に自分がそう呼ばれるって事気がついてないのかな・・・
0525デフォルトの名無しさん
垢版 |
2018/08/04(土) 09:59:13.29ID:2dadGiC9
>>521
歴史?

過去発生した問題点や注意点を伝えるのは上司や先輩の役目

言語自体の歴史、CPU自体の歴史なんか
興味があるヤツだけ勉強すれば良い
0526デフォルトの名無しさん
垢版 |
2018/08/04(土) 10:02:32.30ID:F7vd0ILk
数人のグループで開発しているなら、あえてコーディング規約を設けずしても出来るだろうが
100人、1000人規模で開発しているなら、工業製品としての品質管理として必要になるでしょう
0529デフォルトの名無しさん
垢版 |
2018/08/04(土) 10:11:50.81ID:2dadGiC9
100人規模1000人規模のソフト開発で
若者に言語の決定権があるってのは
すごい会社だね
0531デフォルトの名無しさん
垢版 |
2018/08/04(土) 10:27:14.97ID:UzBGgsy3
いや別に好きにすればいいとは思うのだが
勝手に自分で選んだ言語固有の問題にぶち当たって
人に泣きつくなっつー馬鹿みたいな話があまりに多いんで。
>>525
まともに聞いてくれれば問題ない。
0532デフォルトの名無しさん
垢版 |
2018/08/04(土) 10:54:42.16ID:VXqPvtUW
出来たばかりの最新規格の機能ならともかく
C++98以前からずーっとある言語の基本機能を大した理由もなく縛ってるのは阿呆でしょ
(「大した理由」があるなら縛ってもいいのよ、本当に大した理由ならな)
0533デフォルトの名無しさん
垢版 |
2018/08/04(土) 11:09:59.74ID:9+U//wQd
>>460
横だがDLLにstd::stringとかSTLのオブジェクトを渡したり返したりする設計ェ、、、
std::string程度なら現実には動くが、STLの内部動作のバージョン間の整合を誰も保証してくれない以上、
そういう設計をされるともはや誰も動作を保証できなくなる

STLに限らずOpenCVやCRT絡みのオブジェクトでもそう、
というわけでこういうライブラリのバージョンの統一を担保できない状況ではchar[]の登場と相成りぬ、
0534デフォルトの名無しさん
垢版 |
2018/08/04(土) 11:20:42.46ID:Xh+3QD0k
char[]を使う関数をDLLにして、その関数をstd::string版関数オーバーロード的なラッパーをヘッダーに記述するでしょ、普通。
というか、std::string専用である必要はなく、template関数にしとけばSTLportだろうかstdだろうかEASTLだろうが対応可能になる。
0535はちみつ餃子 ◆8X2XSCHEME
垢版 |
2018/08/04(土) 11:23:58.97ID:SzDDeCK/
バイナリでの保証を考えると STL を使いにくいってのは確かにあるよな。
COM のような形式を使えばオブジェクト指向をバイナリレベルで管理することも出来るが、
それはそれで別の規約に縛られてしまうわけで。

どんな規約にするにせよ不満は有るよ。
一貫した規約が無い不満よりは規約に不満を持つ方がマシな世界になりがちなのが現実。
0536デフォルトの名無しさん
垢版 |
2018/08/04(土) 11:33:14.55ID:CpwGeL+S
そんなもん文字列のポインタ渡せばしまい
頭悪いのって悩む必要がないどーでもいい事で悩むからな

それぞれの完結したモジュールでどのバージョンのSTL使おうが関係ないからな

string ahoをaho.c_str()で渡すだけ
0538デフォルトの名無しさん
垢版 |
2018/08/04(土) 11:54:01.62ID:CpwGeL+S
頭悪いシロウトほど可変長の文字列クラスをいちいち使いたがるからな
0539デフォルトの名無しさん
垢版 |
2018/08/04(土) 11:57:27.88ID:CpwGeL+S
もしかしてvectorとかもいちいち自分で全部ラップしってんの
とにかく頭が悪すぎるわ
0540デフォルトの名無しさん
垢版 |
2018/08/04(土) 11:59:57.25ID:9+U//wQd
ここで問題なのは可変長の文字列クラスを使いたがる類の素人なのではなくて、
DLLのcallerとcalleeでSTLやCRTのバージョン相違しているケースを想像できない類の素人なのでは…
0541デフォルトの名無しさん
垢版 |
2018/08/04(土) 12:07:08.58ID:CpwGeL+S
このスレにいるような知恵遅れがどんな作り方しても
ぜんぜん問題にならない

STL ver baka
void bakabaka(char const* aho_) {
 std::string baka("shine");
 ahoaho1(baka.cstr());
}

STL ver aho つかったdll
void ahoaho1(char const* aho_) {
}

なにが問題になるわけ?
もうね知恵遅れのいうことは意味が分からないわけ
0542デフォルトの名無しさん
垢版 |
2018/08/04(土) 12:08:24.92ID:73YctOjT
>>484
極めて同意
仕事だと、過去のしがらみや、コーディングルール等に縛られて、思い通りにできない。
自分で地道に実験してゆくしかない
0543デフォルトの名無しさん
垢版 |
2018/08/04(土) 12:16:41.91ID:9+U//wQd
いやほんと
呼び出し元と同じ完結したモジュール内で定義された関数にはconst std::string& ahoやconst std::vector &vecで渡し、
DLLで定義された関数にはaho.c_str()や&(vec[0])で渡す、と区別すればwrapperは要りませんなあ、
いやはや>>541は便利なやり方をいろいろご存知ですなあ、、
0544 ◆QZaw55cn4c
垢版 |
2018/08/04(土) 12:54:24.58ID:Rdsot1y5
>>519
「〜なので、〜なので、○○だ」
読んでとまどいを覚える日本語文ですね
0545 ◆QZaw55cn4c
垢版 |
2018/08/04(土) 12:56:26.35ID:Rdsot1y5
>>532
K&R2 の世界の人にとっては、十分に未知な領域なのでしょう…
私は K&R2 自体がすでに「堕落したもの」と考えております
0547デフォルトの名無しさん
垢版 |
2018/08/04(土) 18:05:43.06ID:Xh+3QD0k
ポリモーフィズム(多態性)を可読性を下げる欠点ではなく、可読性を上げる長所と考えるのがC++プログラマとしての信仰の基本なので、
様々な記述方法を許す多態性を嫌うのなら、C++を棄教せねばならないでしょう。
演算子オーバーロードを耐えられる情報処理能力があるなら、参照渡しにも耐えられるはずで、参照渡しだけ目の敵にするのはただの原理主義ですね。
0551デフォルトの名無しさん
垢版 |
2018/08/05(日) 05:07:56.69ID:xG+zmDln
だれかたすけてください。
https://dotup.org/uploda/dotup.org1602882.zip
こういうプロジェクトを作ったんですよ。
一応、ゲームっぽいものですが本質はそこじゃなくて。
えーっと、前方参照の解決がよくわからないので直し方教えてください。
普段小さなコードしか扱ってないのでソース分割あまりしないのでわけがわかりません。
コンパイルが通るにはどうしたらよいでしょうか。

お願いします。
0552デフォルトの名無しさん
垢版 |
2018/08/05(日) 08:56:46.93ID:WhsUmrtL
ツッコミどころはいっぱいあるけど
とりあえずGameIssue.hの中でRougeStageの定義が見えてないからincludeしろ
0553 ◆QZaw55cn4c
垢版 |
2018/08/05(日) 17:21:41.90ID:JAQP+wl+
>>506
http://www.kh.rim.or.jp/~nagamura/misc/stroustrup-interview.html
「変数を参照しているのか逆参照しているのかがいつもわからなくなる、だから必ずポインタを使う。アスタリスクが思い出させてくれるから」

C++ の参照は、呼び出し元の記述では参照として渡しているつもりなのか、実体を渡しているのかは区別できず、
呼び出し先の宣言で、はじめて参照か実体かがわかるんですね

個人的には C# のように、呼び出し側でも参照渡しを明示するのがスマートだと思います
そのコーディング規約は良心的だと思います
0562デフォルトの名無しさん
垢版 |
2018/08/05(日) 18:56:17.20ID:K/INtz2h
単純にc++だけで閉じてれば参照で統一ってのもありだろうけれど
c++ってそういう言語じゃないんだよね。
大抵大規模なコードは過去のcソースとごっちゃになってる。
0563デフォルトの名無しさん
垢版 |
2018/08/05(日) 19:04:35.58ID:lZNE8En/
>>551
まずは非常にどうでもいいことだが、AddBug(SharedItem I) こういうモノがあると非常に縁起が悪い

他、小姑みたいなスペルミスの指摘は以下

Sheld盾の綴りはshield (Fieldと同じ原理)
Acsessとaccess、
CollectoerとCollector
TyleとTile
InfmationとMakeTemporaryInfomationとinformation
Initilaize、Initialize
PraramA、parameterA

RougeStage.hとRogue
0564デフォルトの名無しさん
垢版 |
2018/08/05(日) 22:24:16.29ID:yKLkGD1M
いい加減な方法でビルドはできるようにしたのに遊べないよ!
なんとかしろ、作者

GameIssue.h 12行目付近の
class TemporaryInfmation;
をいかに書き換える。
//class TemporaryInfmation;
template <typename RougeStage> class TemporaryInfmationTmpl;
using TemporaryInfmation = TemporaryInfmationTmpl<RougeStage>;

RougeStage.hの3行目付近の
class RougeStage;
~
TemporaryInfmationTmpl(RougeStage* RS) {
をいかに書き換える。
template <typename RougeStage>
class TemporaryInfmationTmpl {
public:
TemporaryInfmationTmpl(RougeStage* RS) {

StatusCollector.hのStatusクラスの
SetDirection()が2個定義されているのでどちらかを消す。
0565551
垢版 |
2018/08/05(日) 23:51:00.40ID:xG+zmDln
こんにちは。色々ご指摘ありがとうございます。
これまだ、脳内コーディングでシステム組んだだけでコンパイルが通って無いように、デバッグさえしてません。
なんとなーく、ローグのAI書いたら面白いんじゃないかと思って書き始めたのですが、沼にハマってしまいました。
とりあえず、前方参照の件は解決したみたいです。
その後大量のエラーと格闘していますが、支離滅裂なエラー(?)が大量に出ていて吐きそうです。

とりあえず、この件については閉めます。
ありがとうございました。
0568デフォルトの名無しさん
垢版 |
2018/08/06(月) 11:34:49.72ID:aJPEpevk
>>567
別の項にmoveコンストラクタ、move代入演算子、perfect forwardingするときは右辺値参照使ってええよって書いてあるから、右辺値参照は対象外なんだと思う。

>>565
できたら遊ばせてねー
0570デフォルトの名無しさん
垢版 |
2018/08/06(月) 13:00:05.48ID:6LLA+7Q/
Googleコーディング規約は古臭くてオワコンだからみんなはISOで作ってる規約を使おうね!
って禿先生が講演で言ってた
0571551
垢版 |
2018/08/06(月) 18:02:56.58ID:L/6qyfUO
>>596
ステージ生成してAIに解いてもらおうと。
そのAI書かないといけないんですけどね。
0572デフォルトの名無しさん
垢版 |
2018/08/06(月) 18:04:44.92ID:L/6qyfUO
しかし、ロジカルなことしたいのに、それ以外のエラーで死にかけるのは困ったなぁ。。。
0573デフォルトの名無しさん
垢版 |
2018/08/06(月) 18:26:13.93ID:0lSQ8xAg
>>572
アルゴリズムの間違いの発見や修正に比べたら、コンパイルエラーの解消なんてコンパイラさんが親切に教えてくれてるんだから、簡単なことだよ。
ロジカルなことしたいなら、コードの記述もロジカルに頑張れ
0575デフォルトの名無しさん
垢版 |
2018/08/06(月) 19:34:04.04ID:ykSda89u
>>570
今現在コード書いてないオワコン禿げのいう事のが信用ねーわ。
江添とかも同類。
コードをまともに書いてないやつが言語仕様決めてるってのがc++のクソなところ。
0577 ◆QZaw55cn4c
垢版 |
2018/08/06(月) 22:20:17.51ID:zDoA3miN
ryzen threadripper 2950X 16C32T 3.5GHz〜4.4GHz !!
なんだか最近急にすごくなっていませんか?
0579デフォルトの名無しさん
垢版 |
2018/08/06(月) 23:12:22.15ID:zQ2KZFwb
floatのゼロ割りって、infになるものの、別にそれ自体が問題ではなくて、
それがクラッシュに繋がるような演算を行うことが問題であって、
例えば条件分岐で一定の大きさ以下の場合のみ参照するようにしているなら問題ないですよね?
0582579
垢版 |
2018/08/06(月) 23:40:51.75ID:zQ2KZFwb
>>580
物体の速度なのでゼロのときがあるんです。
例えば、ある距離に到達する時間を求めるとなると、その距離を速度で割るのでゼロ割りがあり得ます。
0583579
垢版 |
2018/08/06(月) 23:43:04.07ID:zQ2KZFwb
>>581
ありがとうございます。
ゼロで割ること自体を回避するのって、けっこう厄介なんですよね・・・。
ある程度小さい場合は演算しないとか、どれくらい小さかったらいいの?みたいなことを考えないといけないので・・・。
無限大のときにどうする?という考え方の方が対処し易いように思います。
0584デフォルトの名無しさん
垢版 |
2018/08/07(火) 06:50:16.11ID:PssQ1NSH
今Python + Opencvで画像処理をしているのですが、速度の問題でこれをC++に書き換えたいです
Pythonのnumpyみたいなものはc++にも有りますか?
OpencvのMatを(多次元配列に格納するなりして)C++で弄くれると嬉しいのですが
0585デフォルトの名無しさん
垢版 |
2018/08/07(火) 07:05:01.46ID:rmdm0Ojo
まずOpenCVはもともとC++で書かれてるライブラリであってPythonのはラッパーだって所から始めようか
0587はちみつ餃子 ◆8X2XSCHEME
垢版 |
2018/08/07(火) 15:24:28.59ID:pMC2Ofi2
江添っちはコード例はたくさん書いてるけど、
アプリケーションとして完成したものはひとつだけしか見たことねぇ。

今はドワンゴにいるし、社内で使うツールを書いたりすることもあるのかなぁ?
0588デフォルトの名無しさん
垢版 |
2018/08/07(火) 15:40:59.13ID:3k81+fEr
snprintfには第一引数をNULLにすることで本来何文字の領域があればよかったかを判断できるみたいだけど
wchar_tにはそのようなものはないだろうか?
0590デフォルトの名無しさん
垢版 |
2018/08/07(火) 16:51:22.86ID:rmdm0Ojo
おう行ってきたぞ
内容は知ってる話が多かったけど本人の口から聞けて楽しかった
0591デフォルトの名無しさん
垢版 |
2018/08/07(火) 20:17:28.47ID:7soFSQAi
int main(int argc, char** argv)
このchar**って他に変えれたりする?tcharとかwchar_tとか
0594デフォルトの名無しさん
垢版 |
2018/08/07(火) 20:28:56.24ID:rmdm0Ojo
標準で認められてるmain関数はint main();とint main(int argc, char** argv);だけ
それ以外は処理系の独自拡張
0596デフォルトの名無しさん
垢版 |
2018/08/08(水) 00:08:10.74ID:N8tx/Inn
実は宗教的な会合ではなかろうか
教祖もしくは弟子・伝道者・教皇の御言葉を拝聴する、それが宗教だ

現状、全ての教祖・開祖が生きている時代なので、それを感じないだけだ
10年後くらいにはぼつぼつ死にはじめる
そこからが正念場だ

サイモン&ガーファンクルも生きてるし、K&Rも生きてる、ついでに、ビャーネ・ストロヴストルップとかESRも生きてる
21世紀の今がそういう時代というだけだ
0597 ◆QZaw55cn4c
垢版 |
2018/08/08(水) 00:15:12.33ID:35SEMuEM
>>596
デニス・リッチーは2011年に亡くなった
0599デフォルトの名無しさん
垢版 |
2018/08/08(水) 05:08:18.88ID:d90b/R1Y
宗教だと? 失礼だな
俺は禿を盲信なんかしてねえよ
newなんかいらねえと俺は初版の当時から思っていたし
動的例外指定なんぞISOで否定されてんだぞ
0600デフォルトの名無しさん
垢版 |
2018/08/08(水) 05:53:47.96ID:bKO8QxvP
ジェネリックなメモリ確保はどのみち必要だと思うよ。構文がどうであれ。
あと、動的にコンストラクタとか呼ばないといけないし必要だと思うよ。
個人的にnewはライブラリ屋さんが使えばいいものだと思ってる。
0602デフォルトの名無しさん
垢版 |
2018/08/08(水) 06:18:49.25ID:bKO8QxvP
タイプ量増えて嫌カモ。
new T[] ってできるのは結構強いと思う。
まぁ、自分でやる事はないけど。
0603デフォルトの名無しさん
垢版 |
2018/08/08(水) 07:00:42.37ID:/7C7gkY0
A, Bそれぞれコンソールアプリケーションで作成
AがBをCreateProcessする状況を作成しました

Aを実行したらBの専用のコマンドプロンプトが立ち上がって次々に処理をするのかな?って思ってたのですが
実際はAが立ち上げたコマンドプロンプトにBも出力などしてます
これ分離することできないのでしょうか
0604デフォルトの名無しさん
垢版 |
2018/08/08(水) 07:11:53.05ID:d90b/R1Y
タイプ量って、それは現状の構文での話やん
コンストラクタを実行する構文がたとえば3文字のキーワードでできるなら
その主張は崩れる
0607デフォルトの名無しさん
垢版 |
2018/08/08(水) 07:16:30.26ID:d90b/R1Y
template <typename T, typename ...ARGS>
T* create(ARGS ...args)
{
auto ptr = (T*)malloc(sizeof(T));
ptr->T(args...);
return ptr;
}
今C++をリメイクするならnewはクビだろ
0609デフォルトの名無しさん
垢版 |
2018/08/08(水) 08:30:47.37ID:lcYbehB0
メタプログラミングをやってみたいんだけど、テンプレートが中々難しい
みんなどうやって駆使してる?
0611デフォルトの名無しさん
垢版 |
2018/08/08(水) 12:14:27.90ID:rnBqZLRU
LPCTSTRをマルチバイトでもUnicodeでも対応して文字列操作するコードってどう書けば宜しいのでしょうか
0612デフォルトの名無しさん
垢版 |
2018/08/08(水) 12:22:29.48ID:oJrY5QK4
>>611
関数名オーバーロード。それを応用するtemplate。の2つかな。
0613さまよえる蟻人間 ◆T6xkBnTXz7B0
垢版 |
2018/08/08(水) 12:22:37.74ID:NS40+Y1c
>>611
まず、#include <tchar.h>。
次にTEXTマクロ、_Tマクロの使い方を学ぶ。
さらに、<tchar.h>を見ながら、文字列関数呼び出しをジェネリックなものに置き換える。
0615デフォルトの名無しさん
垢版 |
2018/08/08(水) 14:22:56.63ID:oRJqApyO
>>577
お前は未だにPhenomなんてガラクタ使ってるんだっけ
お前は無職だからそれでも恵まれすぎだけどな
0616デフォルトの名無しさん
垢版 |
2018/08/08(水) 14:33:18.94ID:y2s3oWVB
Phenomってガラクタだったんだっけ?
使い始めてそろそろ10年になるが
現在Windows10が動いているけどな
0617デフォルトの名無しさん
垢版 |
2018/08/08(水) 17:05:37.41ID:5Rj4GrBF
プログラムの板で、相手の使ってるハードウェアをネタに
悪口を言うのはよろしくないんじゃないか、と思ったけど、
アンカーの先を見たらそうでもないって気になった。

どうやら「固定ハンドルの人への攻撃はルール無用」という
より上位のルールがあるようだ(あくまで個人的な基準)。
0619デフォルトの名無しさん
垢版 |
2018/08/08(水) 18:09:52.75ID:d90b/R1Y
5ちゃんから入ったニワカ君だな
コテハン様は名無しより偉いんだよ
失礼のないようにね
0620 ◆QZaw55cn4c
垢版 |
2018/08/08(水) 19:20:38.29ID:35SEMuEM
>>615
よく知っているね、phenomIIx6 1090 で粘っていますよ、zen2 7nm にて大人買いしようと資金を積んでいます…
0622 ◆QZaw55cn4c
垢版 |
2018/08/08(水) 20:17:40.85ID:35SEMuEM
>>617
>固定ハンドル
固定ハンドルじゃありません、トリップです!!
0626デフォルトの名無しさん
垢版 |
2018/08/08(水) 21:20:41.90ID:IxvHxUWv
>>611
Tに対応した文字列操作関数だけを使って操作するか、CT2W/CW2TでWに変換して操作するか実質二択。
0629 ◆QZaw55cn4c
垢版 |
2018/08/09(木) 06:59:20.10ID:pqAEhCoO
テスト
◆QZaw55cn4c の酉って割れてるよね?
0631デフォルトの名無しさん
垢版 |
2018/08/09(木) 19:14:37.37ID:oFkunHGA
この前のローグ、標準ライブラリにメモリ確保お願いしてるのに中でNULLオブジェクトを操作して落ちるようになって詰んだ。。。
もういやー。
0633デフォルトの名無しさん
垢版 |
2018/08/09(木) 20:25:08.47ID:oFkunHGA
>>632
返信ありがとう。ヤル気がゴッソリぬけのたのでしばらく放置します。
特殊なこと全くやってないになんでこうなるんやー。
うぅ。。。
0634デフォルトの名無しさん
垢版 |
2018/08/09(木) 20:59:37.47ID:N7zY56wf
>>633
メモリ管理の問題ということは、特殊なことをやってたかではなくて、基本的なことが正しくできてないということだよ。
プログラム初心者ならメモリ管理やポインタに煩わされない他の言語の方が良いかと思うよ。
0637デフォルトの名無しさん
垢版 |
2018/08/09(木) 21:21:51.13ID:2CPDzClL
>>633
バグって自分が絶対に大丈夫なはずと思っている箇所に潜んでいる
しばらく放置してから見つけると、意外に簡単に見つかる
0639デフォルトの名無しさん
垢版 |
2018/08/09(木) 21:58:35.34ID:jXGj01kj
共有メモリでBSTR型のデータを共有してるのだけど
これのデータサイズ取得する方法ある?
対象領域の先頭ポインタを基準にSysStringLen使ってデータサイズとれるかな?って思ったがとれなくて困ってる
0640デフォルトの名無しさん
垢版 |
2018/08/09(木) 21:59:33.60ID:oFkunHGA
>>637
正解。慢心してた。
とおった!!俺のせいだった。ごめんなさい。
なんでスマポのインスタンス自動確保されると思い込んでたんやろ。ここだけ。
ごめんなさい。ごめんなさい。ごめんなさい。。。、
0641デフォルトの名無しさん
垢版 |
2018/08/09(木) 22:30:56.92ID:BtZU6oOJ
慢心と呼ぶべきか、脳内キャッシュを利用した最適化と呼ぶべきか。
しばらく放置することで脳内キャッシュが解放され最新データの利用が可能になる、ありふれた光景。
0642 ◆QZaw55cn4c
垢版 |
2018/08/09(木) 22:34:40.62ID:rS9AJYq6
>>641
私の場合は、しばらく放置しただけではダメで、リリース(公開)することを契機に問題点が不思議と浮き彫りになる、という感覚を持っています
0643デフォルトの名無しさん
垢版 |
2018/08/09(木) 22:39:20.96ID:BtZU6oOJ
>>642
リリース(公開)する時の質問の文章を書くことで、脳内のメモリ配置が変わり、脳内キャッシュが破棄されたのでしょう。
0645デフォルトの名無しさん
垢版 |
2018/08/10(金) 02:28:33.68ID:p9jfuJcV
https://dotup.org/uploda/dotup.org1607631.zip
ふー。皆さまのおかげで、最初のAIが階段に到達するまでできました。
とはいっても想像するよりよっぽどチープだけどね。
やっとまともにデバッグできるようになったら、色々仕様変更したい病発動してジレンマに陥ってる。
特にトラップクラスいらねーんじゃね?とか思い出して、根幹を揺るがせつつある・・・。
というわけで、皆様どうもありがとう。

ちなみにgithubにも公開してるけど、ライセンスはmitなので煮るなり焼くなりしていいよ。
そんな酔狂な人間がいるか知らんし、多分同じコンセプトで書き直したほうがいいカモだけど。
githubはソース置き場にしてるだけからgitの操作さっぱりわからん・・・。Orz
0647デフォルトの名無しさん
垢版 |
2018/08/10(金) 03:47:22.54ID:B+R4+INY
左様そう考えて差し支えない
ID:rT8gQk9M は近隣住民の安全のために、BSTRをもたず、つくらず、もちこませずを堅持すること
0650デフォルトの名無しさん
垢版 |
2018/08/10(金) 04:01:00.88ID:B+R4+INY
>>648
保存(シリアライズ)のインターフェースをBaseに持たせてNextでNextの保存処理を実装したらいいんじゃね
0651デフォルトの名無しさん
垢版 |
2018/08/10(金) 04:06:44.82ID:p9jfuJcV
>>650
ゴメン。ちょっと舌ったらずだった。
各クラスが持ってるTypeに自分の型を保存する方法ないですか?
継承して記憶喪失になっても復元できるようにしたいのです。
システム内でちょくちょく必要になるのは俺がタコだからなんだろけど。
もちろん、ユーザーコードには見せないようにしますよ。
0652デフォルトの名無しさん
垢版 |
2018/08/10(金) 04:18:39.10ID:B+R4+INY
型を知りたいというならdynamic castが一番可搬性が高いやり方だと思うが
型を知りたいだけ、なんてことがあるのかどうなのか

普通はダウンキャストしたいという要求とセットのはずで、
ダウンキャストはインターフェースをゼロから周到に設計すればポリモーフィズムで解決できる
再設計をゼロからやれないときだけがdynamic_castの出番、という印象

※ 個人の感想です
0653デフォルトの名無しさん
垢版 |
2018/08/10(金) 04:35:15.48ID:p9jfuJcV
static_cast<DeleteAster<decltype(p)>::OldType*>(p)->OldTypeMethod();
的なことをやりたいのですよ。
システム制作者が完全に意思疎通してて型がどうなってるか周知って前提なんだろうけど、
継承したものをごっちゃにコンテナに入れたら破綻するんだよなぁ。。。
anyもいいなぁと思ったけど、結局キャストする手間は変わらない。むしろキャスト必須。
なくても何とかなるけど、余計なコード書かないといけないからスマートな方法ないもんかなぁ、と。
0657さまよえる蟻人間 ◆T6xkBnTXz7B0
垢版 |
2018/08/10(金) 04:50:41.18ID:KaDy9gZn
usingとかtypedefとかtype traitsとかautoとか使へば、何とかできる気もするが、
さういうコードをなかなか書けぬ人はスクリプト言語へ行くへし。
0658デフォルトの名無しさん
垢版 |
2018/08/10(金) 04:58:16.48ID:p9jfuJcV
rustがレールに乗ればなぁ。
そういえば、anyはtype_infoを返すメソッドがあるのでので動的にチェックができるみたいだねぇ。
ないよりましだけど、確率になっちゃう。ぐぬぬ。

>>657
そうそう、できそうな気はするんだよね。うーん。。。
0659デフォルトの名無しさん
垢版 |
2018/08/10(金) 05:13:40.93ID:B+R4+INY
>>657
ID:p9jfuJcVの悩みはコンパイル時に解決できないからusingとかtypedefとかtype traitsとかautoでは_ぽ
(Base* pを扱うコードのビルドでコンパイラが常に*pの型がNextであることを見抜いたり、Nextの詳細を見通せたりするわけではない

というわけでポリモーフィズムでしか解決できん
ID:p9jfuJcVは、クラスごとに異なるOldTypeMethod()を呼び出すインターフェースCallOldTypeMethod()を設けて
BaseやNextそれぞれ毎に、適切なOldTypeMethod()を呼び出す実装を与えなさい

※ 個人の感想です
0660デフォルトの名無しさん
垢版 |
2018/08/10(金) 05:52:46.45ID:d4sNno4d
実行したいこととオブジェクトの型が一対一対応であるという保証はない。
C++固有のポリモーフィズム機能を使うと他の言語に移植できなくなる。
実行したいことを列挙型なりビットフラグのメンバ変数として保存しておくのが一番楽だろう。
0662デフォルトの名無しさん
垢版 |
2018/08/10(金) 05:59:59.43ID:d4sNno4d
追記。
やりたいことが1種類だけなら型と紐づいていても問題ないが、
やりたいことが複数の組み合わせになったら型と紐づいた設計は破綻する。
何がいいたいかというと、アキラメロンということだ。
0663デフォルトの名無しさん
垢版 |
2018/08/10(金) 06:38:46.33ID:p9jfuJcV
皆さまありがとうございます。無理ぽいことがよくわかりました。

>>659
うーん。
仮想関数との違いがよくわからないなぁ。
プロキシ―オブジェクトってことなんだろうけど。
うーんと、ほしいときって初期化タイミングの調整とかそのへんなのでメインレールはインターフェースでいいんだよなぁ。
どうしてこう融通が利かないのか。設計のせいか・・・Orz

>>660
結局そういうことになるんですよねぇ。。。うーん。

>>661
コンセプトがいるような気がする。
さっき上げたコードをテンプレートとanyで書けば同じようなことはできるけど、エラー吐いたら地獄な気がする。
でも、そっちの方が高機能かもしれんなぁ。anyのキャスト問題を除けば。
0664デフォルトの名無しさん
垢版 |
2018/08/10(金) 06:40:45.22ID:p9jfuJcV
とりあえず、お付き合いいただきありがとうございました。
今日は寝ます。また。
0665デフォルトの名無しさん
垢版 |
2018/08/10(金) 07:05:11.27ID:f/eWc4F9
Unicodeの時はwchar_t、マルチバイトのときはcharとして扱ってデータをコピーしたい
その切り替えを処理途中にifdef入れまくるのは不適切だと思うからdefineかtypedefを一度することによって
自動で切り替えられるようにしたいけどtypedefだとできない?

#ifdef unicode
#define tlen wcslen
#else
#define tlen strlen
#endif

int main ()
{
TCHAR a;
int size = tlen(a);
}
0670デフォルトの名無しさん
垢版 |
2018/08/10(金) 07:31:58.40ID:d4sNno4d
>>665
以下のようなwchar_t, char に応じたオーバーロード関数もある。私は使わないけど。

std::char_traits::length(const T* s)
0674デフォルトの名無しさん
垢版 |
2018/08/10(金) 07:44:16.79ID:f/eWc4F9
>>670
これだとLengthに特化したやつだけになるのかな?
他にもあるので切り替え方法が知りたく

>>672
コンパイル時には決まってます
テンプレートを作成するってのはT型を作るってことかな?
0675デフォルトの名無しさん
垢版 |
2018/08/10(金) 07:46:33.59ID:uYApHCeM
クラスのインスタンスのコピーさせない方法ってコンストラクタにdeleteをつけるだけで実現可能?
それとも違うんかね?
参考を探していてもデフォルトコンストラクターにつけているだけで
複数のコンストラクターがある場合とかがわからない
0680デフォルトの名無しさん
垢版 |
2018/08/10(金) 08:53:13.90ID:FVsJ4La+
STLの仕様を見ます
自分で実装します
ソースコードをみて答え合わせをします

まずはvectorから、ハイ、どうぞ
0681デフォルトの名無しさん
垢版 |
2018/08/10(金) 09:02:52.19ID:I9yy5anA
高位合成toolを入手します。
あなたの思った通りの動きをするCPUを作れば完成
0682デフォルトの名無しさん
垢版 |
2018/08/10(金) 09:44:57.66ID:UZimlLTI
CreateProcess失敗したときのhProcessに何が入るか記載しておいてよmsdn
NULLなの!?それとも別なの!?
msdn使いこなせるやつすげぇよ本当に
0686デフォルトの名無しさん
垢版 |
2018/08/10(金) 12:20:52.35ID:LvXbuhRM
>>683
CreateProcess()使ったことあれば lpProcessInformation.hProcess ってわかると思うが…

>>682
何も書いてない → 何が入っているかわからない
ってことだろ
0689デフォルトの名無しさん
垢版 |
2018/08/10(金) 14:25:58.73ID:NKvoiPPS
>>685
std:char_traits<char>::length(const char*)
std::char_traits<wchar_t>::length(const wchar_t*)
こういう関数の選択は引数によらない
wchar_t x[2];
std::char_traits<char>::length(x); //error
0692デフォルトの名無しさん
垢版 |
2018/08/10(金) 18:49:42.52ID:hMB1uQwa
>>682
関数が失敗したら新しいプロセス自体作れられないんだから
hProcessが不定でも何も困らないと思うが
0701デフォルトの名無しさん
垢版 |
2018/08/11(土) 12:18:16.68ID:X6Hz/xY3
>>700
Wikiより規格票な

N3337 13 Overloading [over]
When two or more different declarations are specified for a single name in the same scope, that name is said to be overloaded.

JIS X3014:2003 13. 多重定義
同じ名前を指定した異なる宣言が同一有効範囲内に複数ある場合,その名前は,多重定義されているという。

言わんでも解るだろうから、説教臭いことはあえて黙っておく
0702はちみつ餃子 ◆8X2XSCHEME
垢版 |
2018/08/11(土) 13:37:39.73ID:zO3XAoAm
たしかに >>670 のいう「オーバーロード」は用語の使い方が誤っているが、
それはそうとしてオーバーロードっていう言葉の中にバーローという言葉が入ってるから、
オーバーロードの話題が出るたびに俺の中のコナン君がバーローとささやくので、
お前らにも同じ呪いをかけてやろう。
0704デフォルトの名無しさん
垢版 |
2018/08/11(土) 13:43:33.49ID:xFvEQmr2
std::char_traits<char>::length()と
std::char_traits<wchar_t>::length()は
互いに同じ名前(a single name)なんやろうか…
0705デフォルトの名無しさん
垢版 |
2018/08/11(土) 15:53:50.27ID:xFvEQmr2
>>663
>どうしてこう融通が利かないのか。設計のせいか・・・Orz
ユーザーコードにクラスの中で定義された型(Base::TypeやNext::Type)を見せるのはやめて、
NextやBaseのオブジェクトのふるまいとしてだけ見せたら宜しいかと

ふるまいだけを見せる抽象化はまず純論理的にはポリモーフィズムで逝ける
次の段階として、呼び出しの度にvtblの間接参照が一発入る遅さを嫌い、高速化したいという要求が生じるかもしれないが
そのときは知らん(テンプレートによるダックタイピングでさらに戦うこともできるが同一翻訳短以内でのcloseが前提でありかつクラスの継承の恩恵にはなかなかあずかれない
0706デフォルトの名無しさん
垢版 |
2018/08/11(土) 15:58:27.82ID:xFvEQmr2
なおふるまいだけを見せる抽象化ができないオブジェクト指向言語とか無いから他言語への移植性とかを気にするのは狂気の杞憂
ていうか非オブジェクト指向言語であっても関数ポインタと構造体が使えれば似たようなことはいつでもできる
0707デフォルトの名無しさん
垢版 |
2018/08/11(土) 18:59:43.05ID:X6Hz/xY3
非オブジェクト指向言語とオブジェクト指向言語で
最終的に作れるものと作れないものは
その違いによる差は全くないんだが
0710707
垢版 |
2018/08/12(日) 07:44:03.92ID:2Xoj+DoI
俺の偽物がいるな
0711デフォルトの名無しさん
垢版 |
2018/08/12(日) 20:13:35.92ID:KnTIebYQ
レイトレーシングをやってみたいんですけど、何もない状態から画像を生成するのと、画像処理(opencv)でやろうと思ってます。
前者と後者とも資料は見つけたのですが、どうやって勉強するのがおすすめですか?
opencvで例えばアイドルの画像をCGっぽく、またはアニメっぽくはできたりするのでしょうか?
0713デフォルトの名無しさん
垢版 |
2018/08/12(日) 23:17:59.82ID:RJjtK8Ko
>>711
レイトレーシングの本質は三次元空間での光の挙動のシミュレーションであって
既存の画像を加工するような技術じゃないぞ
0714デフォルトの名無しさん
垢版 |
2018/08/13(月) 00:27:19.20ID:p4qIMBze
Late racing.
0715デフォルトの名無しさん
垢版 |
2018/08/13(月) 00:28:37.24ID:p4qIMBze
視線の追跡したほうが効率よさそうな気がする。
目に入らない光は無いも同然だし。
0720デフォルトの名無しさん
垢版 |
2018/08/13(月) 01:42:46.41ID:+YkMTMKz
遠い昔だが、いい基礎解説本があったんだがタイトルが思い出せない
98用のCのソースコードも附録でついてた
98なんかもってなかったから、Xlibで動かした記憶がある

その書籍はサーフェイスモデルもレイトレーシングも基礎から丁寧に書いてある良書だった
サーフェイスモデルについては、ものすごい力を入れて書かれてた良い本だった

ワイヤーフレームから陰面消去、さらに双三次スプラインでの補間、そしてレンダリング、バンプマッピング
さらに3次アフィン変換つかってモーションキーで動くとこまで解説してる
基礎で必要な内容は、ほぼすべて網羅されてて、バカでもチョンでも分かるように書かれてた

で、レイトレーシングはサーフェイスモデルより超簡単だからな
このスレのアホが難しいといってるだけで
むしろレイトレーシングはバカでもチョンでも分かる
0721デフォルトの名無しさん
垢版 |
2018/08/13(月) 01:48:30.63ID:GxmByJ3O
せっかく良い質問なのに、
あまり汚い言葉で、アホとかバカとかチョンとか言わなない方がいいよ…
0725デフォルトの名無しさん
垢版 |
2018/08/13(月) 03:39:58.88ID:p4qIMBze
レイトレーシングに限らないけど、アルゴリズムの勉強にはLinuxが良いですよ。
0727デフォルトの名無しさん
垢版 |
2018/08/13(月) 04:14:38.66ID:p4qIMBze
Kernelソースが勉強になります。
0728デフォルトの名無しさん
垢版 |
2018/08/13(月) 04:15:34.47ID:J+SKK2b0
openclとグラボの勉強したら?
レイトレーシングの大量の計算するのがグラボでしょ
0729デフォルトの名無しさん
垢版 |
2018/08/13(月) 06:59:52.73ID:k7xD/gvg
>>724
アスキーの『応用グラフィックス』か。入門・実習・応用の3冊シリーズだね。
各巻のつながりは緩いから順番に読まなくてもほぼ大丈夫だけど。

確かに良い本だった気がするけど、なにぶん読んだのが昔なんで
いくらも理解できなかったわ。今ならもう少しマシだと思いたい。
大学近くの古本屋でなら見つかるかも。
0730デフォルトの名無しさん
垢版 |
2018/08/13(月) 07:05:01.34ID:JKsq+WjD
 
畏(おそ)れ多くも森喜朗元帥閣下の有り難いお言葉:
 「オレはIT(いっと)のことはよく知らんがぁ
   時計をたった2時間早めるだけだろぉ?
  オレなら1分あれば済ませるぞぉ!
   サマータイムの何がそんなに難しいんだぁ?」
 
システム開発現場の勇ましい言葉:
 「畏れ多くも森元帥閣下のご下命を賜った以上
   現場SEは有り難いお言葉に勇気百倍
  デスマーチとバンザイ突撃を敢行いたします!」
  
 「マラソン選手さまが涼しい時間に走るためなら
   現場SEの千人や二千人死んでも本望です!
  私たちSEの生命など、虫けらと同じです!」
 
 「畏れ多くも森元帥閣下の有り難いご下命にしたがって
   最前線システム開発現場で殉職出来るとしたら
  現場SEとしてこれに勝る喜びはありません!」
 
日本という国では
 体育会系が一番偉い(森元帥閣下、田中理事長)
  文科系がその次で(財務省、教授会)
 理科系は最底辺の奴隷とされています(現場SE)
 
0731デフォルトの名無しさん
垢版 |
2018/08/13(月) 07:26:44.37ID:WtSMvp2C
レイトレーシングがサーフェイスモデルより簡単とか
半透明物体内部の散乱表現に踏み込んだらそんな寝言は言えないんじゃ…
0732デフォルトの名無しさん
垢版 |
2018/08/13(月) 10:07:11.78ID:uSgRX9ke
みんな例外と戻り値ってどう使い分けてる?
例えば以下みたいな、ファイルからとある要素を抜き出して返す関数とかで

std::string extractHogeFromFile(const std::string& file_path)

俺だったら以下みたいにしてるけど、いまいちしっくり来てないとも思ってる

ファイルが見つからない→例外
要素が見つからない→例外
要素が見つかるけど空→空

みんな例外クラスとかはstd::exception継承して自作してるのかな?
バックトレースやコード行数とれないのが使いにくくて、javaっぽい例外クラスを自作してる
0734デフォルトの名無しさん
垢版 |
2018/08/13(月) 10:17:50.65ID:gsTSbRo/
exceptionを直に継承ということは滅多にないな
system_errorがあるからerror_categoryの派生クラスを作れば大抵足りる
__FILE__ や __LINE__ のようなデバッグ情報を入れたくてマクロを作ることはあるけどね

空という概念ならoptionalはいかが?
template <typename ELEMENT>
std::optional<ELEMENT> extractHogeFromFile(std::path) noexcept(false);
0735デフォルトの名無しさん
垢版 |
2018/08/13(月) 10:36:14.97ID:uSgRX9ke
>>733
発生時は確かに遅いね
ただ、あくまでも例外的なものだけに利用をとどめておけば、そんなに発生するものでもないし、その場合は戻り値をifで見るより命令数が少なくなるから、結果的に高速になるって俺は考えてる

>>734
exception直に継承も少し疑問もってるんだけど、std::exceptionのcatchで全部取りやすいからこうしてるんだよね
...でcatchは乱暴な気がするし

ただ、調べて見た感じsystem_errorも使いやすそうね。最近開発で使えるようになったC++11だからこんなのあるの気づいてなかったわ
std::optionalとかあったんだね、ちょっと調べてみるわありがとう
0736デフォルトの名無しさん
垢版 |
2018/08/13(月) 11:20:33.79ID:NtbFT1j9
>>720
レイトレーシングが簡単なのは入り口だけ
20世紀あたりのなんちゃってレイトレーシングは楽だけど本格的にやると解決できない問題が多数出てくる
0737デフォルトの名無しさん
垢版 |
2018/08/13(月) 11:32:34.68ID:D1VtDJH7
ファイル開くのはそれ自体がすっごい遅い操作だから例外のコストなんか無視できるのと
開き損なうとそれ以降の処理が致命的な失敗になりやすい
そういう操作のエラー通知が例外に向いてる
0739デフォルトの名無しさん
垢版 |
2018/08/13(月) 12:31:28.26ID:Z0vFISs/
>>832に対して
例外は遅いから例外の時に使いましょう
ということを書いたつもりなんだけど

単なる終端マークとか区切りとか
そういう頻出する可能性のある用途では使っちゃダメってこと
0740デフォルトの名無しさん
垢版 |
2018/08/13(月) 12:35:13.84ID:Z0vFISs/
例外は仕組みを入れるだけで、
例外が発生しなくてもオーバーヘッドが発生する環境がほとんどなので
組み込みだとわざと無効にすることも多い

x86の64bitはオーバーヘッドが無い代わりに
例外発生時は極端に遅い
一度測定してみるとその遅さがよく分かる

そういうことがわかっていれば
どこに使うべきかがおのずとわかる
0741デフォルトの名無しさん
垢版 |
2018/08/13(月) 12:41:46.34ID:WtSMvp2C
低水準ライブラリに属するべき関数が例外みたいな高級なしくみに依存するのは美しくないキモス
システム設計とかアプリの基本設計レベルで例外の種類とcatch箇所とcatch時の処理を定義して使うなら良い
が、呼び出し側でif文を書きたくないからという理由でイミフな例外定義を行うと、結局第三者に正しく使ってもらえない
キモス
0742デフォルトの名無しさん
垢版 |
2018/08/13(月) 12:48:07.11ID:WtSMvp2C
例外のオーバーヘッドについてはこれな↓↓↓
ttp://zakkas783-blog-blog.tumblr.com/post/3870295160/c-の例外ハンドリングとパフォーマンス

>>740の通り例外処理の裏側の実装には2つの潮流があるんじゃ
0743デフォルトの名無しさん
垢版 |
2018/08/13(月) 13:03:58.12ID:u8inRKlo
制御をすっ飛ばす必然性があるほどの例外的状況に限るのが吉だろうな。
返値で返せないものを返すのに使うなら検査例外のような保証が欲しいところ。
0744デフォルトの名無しさん
垢版 |
2018/08/13(月) 13:22:39.94ID:BGH31mSy
別スレッドでの関数呼び出し階層が深すぎて安全にスレッド終了させる方法が分からない時に便利でしょ、例外。
0747デフォルトの名無しさん
垢版 |
2018/08/13(月) 14:16:12.02ID:uSgRX9ke
前測ったときはアセンブリ言語にしてみると、戻り値ifチェックだと2命令だったのが例外使うと20命令くらいだったなぁ
0748デフォルトの名無しさん
垢版 |
2018/08/13(月) 14:27:34.65ID:uSgRX9ke
>>741
自前の文字列操作のUtilとかだと例外にするかすごいその観点で迷うんだよね

>>743
賛否両論なjavaの検査例外だけど欲しくなるときはあるね
C++の例外指定がもう少し使いやすければよかったんだが

>>744
すごく同感
0750デフォルトの名無しさん
垢版 |
2018/08/13(月) 14:48:44.15ID:p4qIMBze
HTTPで400番台500番台は例外投げればいいのかな。
0751デフォルトの名無しさん
垢版 |
2018/08/13(月) 14:51:05.76ID:p4qIMBze
例外を投げるクラスはピッチャーって名前でいいんか?
受け取るクラスはキャッチャー?
0753デフォルトの名無しさん
垢版 |
2018/08/13(月) 15:38:43.20ID:Twrhv79p
C++17では多値が返せるようになりました。
できるならレガシーを切って次へ行きたいものです。
またはstd::optionalなんてものもありますな。

std::tuple<bool,Item> Fun(){return {true,Item()};}
auto [F,I] = Fun();
0754デフォルトの名無しさん
垢版 |
2018/08/13(月) 15:41:48.16ID:Twrhv79p
あ、多値自体は返せたけど受け取って初期化できるようになったか。
ちなみにすでに実体化している変数は、std::tie(...);で受け取れます。
0760デフォルトの名無しさん
垢版 |
2018/08/14(火) 02:06:11.13ID:41LFYoyc
>>758
何と比べてる?
0762デフォルトの名無しさん
垢版 |
2018/08/14(火) 03:32:08.59ID:+lmSJTba
演算子オーバーロードっぽいものを珍重するのはやめた方がいいと思うけどね。
0763デフォルトの名無しさん
垢版 |
2018/08/14(火) 08:20:26.94ID:8F/Sy9ZI
autoでしか受けられないのがイマイチかなあ
メインの戻り値は期待する型を明示したいことがある
エラーの方が何のenumかは知ったこっちゃないからautoにしたかったりするからややこしい
0764デフォルトの名無しさん
垢版 |
2018/08/14(火) 09:31:57.53ID:oMbBbcEB
無名の共用体と似たようなもので
構造体のメンバをバラで貰えるってだけやん
0766デフォルトの名無しさん
垢版 |
2018/08/14(火) 12:12:14.83ID:9UC8tUq9
C++のメタプログラミングって実際にはどうすればあんな複雑に書けるの?
自分は出来ても階乗を求めると型の判別くらいしか出来ない
0771デフォルトの名無しさん
垢版 |
2018/08/14(火) 14:16:24.99ID:9UC8tUq9
>>770
確かに置き換えられるんだけど、それじゃあ普通のプログラミングと変わらなくて面白みが無いと思って‥
0773デフォルトの名無しさん
垢版 |
2018/08/14(火) 14:41:24.25ID:UlU0qat0
>>772
もちろんtemplateも使う
0774デフォルトの名無しさん
垢版 |
2018/08/14(火) 16:24:16.29ID:oKGdiTQg
>>760
特に何とは言わないけど

return (123, "456");
とか
return 123, "456";

みたいに現行のc++ではできないタプル表現のほうがすっきりして見える (個人の感想です)
0777デフォルトの名無しさん
垢版 |
2018/08/14(火) 17:01:49.73ID:zHCh+0V6
vector<object*>* list;
Fuga fuga;
Hoge* hoge;
for(int i = 0; i < 5; ++i)
{
fuga.fugaMethod(hoge->hogeMethod(list->at[i]));
fuga.fugaMethod(hoge->hogeMethod((*list)[i])); // エラー
}

リストの要素に対して全部処理をするっていうよくあるプログラムなんです。
なんですが、上の書き方だと通るのに対して、下の書き方だと「式にはクラス型が必要です。」と出ます。
vectorの要素指定はat(i)を使うか括弧で指定するかの2通り、違いは範囲チェックを行うかどうかだけという認識だったのですが……
何がまずいんでしょうか?
0779デフォルトの名無しさん
垢版 |
2018/08/14(火) 17:27:33.05ID:8F/Sy9ZI
typoじゃないとしたら、上は通ってるんだから
hogeMethodの引数がobjectかobject&なんだろうな
0780デフォルトの名無しさん
垢版 |
2018/08/14(火) 17:31:42.31ID:zHCh+0V6
えーっとtypoじゃないです。
何がまずいんでしょうか。ポインタだしアロー演算子で問題ないのでは。
それとhogeMethodの引数はobject*ですね。抜けてましたすいません。
0782 ◆QZaw55cn4c
垢版 |
2018/08/14(火) 18:00:20.07ID:5K5qKv3G
>>777
vector<string *>::iterator list;
なら理解できるのですが、
vector<string *> *list;
というのが、よくわからないのです
プログラム例では list にすでに値が入っているようですが、実際には
list をどのように初期化しているのでしょうか?
0783782 ◆QZaw55cn4c
垢版 |
2018/08/14(火) 18:19:15.36ID:5K5qKv3G
>>777
(*list)[i]
(*list).at(i)
list->at(i)
は等価であることを確認しましたが
list->at[i]
というのは逆にダメっぽいです
https://ideone.com/ripLji

list->at[i]
がどういう文脈なのか?
コンパイラがなになのか情報をください
0784デフォルトの名無しさん
垢版 |
2018/08/14(火) 18:27:08.03ID:oMbBbcEB
>>780
何がまずいって
listはvector<object*>へのポインタ
list->atはvector<object*>::atでメンバ関数
ここまではいいが
at[i]は関数に添え字だろ

こうやってんのと同じだぜ
void func();
func[1];
0786デフォルトの名無しさん
垢版 |
2018/08/14(火) 18:35:36.38ID:zHCh+0V6
あ、すいません、確かにat(i)はtypoでしたね。
ごっちゃになってましたすいません
0787デフォルトの名無しさん
垢版 |
2018/08/14(火) 19:46:01.17ID:TB9AjC50
>>786
> 確かにat(i)はtypoでしたね。
なら普通に両方コンパイルはできるはず
エラーになる最小限のコードにしてどこかにアップして
0789デフォルトの名無しさん
垢版 |
2018/08/14(火) 20:01:24.90ID:UKq+CNIv
関数テンプレートの部分特殊化ってC++17でもできないの?
0793デフォルトの名無しさん
垢版 |
2018/08/15(水) 15:58:12.56ID:/VaqEwQY
関数の多重定義もクラステンプレートの部分特殊化でstaticメソッドを特殊化したら代替できるからイラン
0794デフォルトの名無しさん
垢版 |
2018/08/15(水) 17:45:56.30ID:bAZUebux
>>793
どゆこと?

たとえば
int abs(int);
double abs(double);
を、
クラステンプレートの部分特殊化でstaticメソッドを特殊化つーと
template <typename A, typename B>
struct num;
template <typename A>
struct num<int>
{
static int abs(int);
};
template <>
int num<int, int>::abs(int arg)
{
return arg < 0 ? -arg : arg;
}
みたいなことすんのか?
0797デフォルトの名無しさん
垢版 |
2018/08/15(水) 18:48:12.11ID:GkoLimxd
うご、投稿してモータ。
例のローグのシステムが大分できたのでなんとなく投下してみた。
汎用AIってどうやって書けばいいんや?
しかも、まだバトルシステム作ってないし。
0798デフォルトの名無しさん
垢版 |
2018/08/15(水) 19:02:43.98ID:GkoLimxd
ところで質問なんだけど、パスファインディングってサービスとして入れたほうがいいのかなぁ。。。
0799デフォルトの名無しさん
垢版 |
2018/08/15(水) 22:40:01.74ID:QxvGNpoJ
>>766です
C++テンプレートメタプログラミングという本を買ってみたのですが、この本C++BoostのMPLの解説本です
C++17がある今、この本の価値ってあるんでしょうか?
一応全部読んでみようと思ってるのですが
0802デフォルトの名無しさん
垢版 |
2018/08/16(木) 08:50:47.25ID:MDl/UAh8
>>800
>>801
すみません
Boostを使わず、mplを使わないのでメタプログラミングするのが目的なので、それがこの本を読んで可能なのか?という質問の趣旨です
0803デフォルトの名無しさん
垢版 |
2018/08/16(木) 09:51:57.97ID:t6OwQxX1
>>802
> Boostを使わず、mplを使わないのでメタプログラミングするのが目的
そんな明確な目標あるのになんでこんな本買うかなぁ
ちょっとググればこんな意見が見つかるだろうに…

ちょっと文章が直訳っぽくてところどころ不自然だけど,丁寧にBoost.MPLの実装(と使い方)について解説してあってとても分かり易い!
http://d.hatena.ne.jp/eldesh/touch/20100412/1271090614
0804はちみつ餃子 ◆8X2XSCHEME
垢版 |
2018/08/16(木) 10:25:53.58ID:f3MTrlhW
>>802
メタプログラミングを活用すればこういうことも出来得るという事例集として見れば無駄ではないと思うが、
それを読んでメタプログラミングが出来るようになるかというと否だと思う。
0805デフォルトの名無しさん
垢版 |
2018/08/16(木) 12:02:41.09ID:MDl/UAh8
>>803
この本を買ったのは高橋晶のC++11対応のテンプレートテクニックって本を読んで、巻末に本の紹介があって、メタプログラミングについて知りたいならこの本を読むべきって書かれてあって、読むことにした
そのブログはすでに読んである
>>804
メタプログラミング自体はどうすれば出来るだろうか?
0808デフォルトの名無しさん
垢版 |
2018/08/16(木) 13:19:15.31ID:MDl/UAh8
>>806
売ることにします‥
>>807
もう日本人に頼るのは辞めました
そもそもWG21から情報を検索したほうが有意義かも
これからは日本語のプログラミング書籍は買わない方がいいって教訓になりました
0814デフォルトの名無しさん
垢版 |
2018/08/16(木) 16:39:09.24ID:TxXnQ6gb
英語をスラスラ読めるなら「遅い・高い・分かりにくい」の
和訳版を買うことはないわな。
原書ならPDF版がタダでネット公開されてたりするし。
0815デフォルトの名無しさん
垢版 |
2018/08/16(木) 20:44:21.68ID:JF8AnYsh
>>799
前半とこどこBoost.MPLの設計理念とかどう実装されてるかとか書いてあるから、そこは参考になると思う
後半のTMP関連のテクニックはおそらく求めているものではないかと
ExpresionTemplateの実装にあまり踏み込まないけど、どのように誤用されているかは少し参考になった
0817デフォルトの名無しさん
垢版 |
2018/08/17(金) 11:54:52.92ID:BEBC5Dle
あの初歩的な質問で申し訳ないんですけど、クラスのメンバ関数のことです
例えばAってクラスがあって、hogehogeって関数があったとします
それでhogehogeは内部で関数を3つ呼び出す。ざっとこんなイメージです

A.h
class A
{
public:
void hogehoge();
}

A.cpp
void A::hogehoge()
{
x();
y();
z();
}

main.cpp
main()
{
A a;
a.hogehoge;
}

んでこの場合の関数x() y() z()なんですけどクラスAのメンバ関数にすべきなんでしょうか。
それとも単にA.cpp内に関数書くだけでいいんでしょうか。
x()y()z()はhogehoge以外から呼び出されることはありません。
自分は前者だと思うんですが、参考にしろと渡された前任者(今いない)のコードだとなんでもかんでもメンバ関数です。
よろしくおねがいします。
0818デフォルトの名無しさん
垢版 |
2018/08/17(金) 12:01:22.82ID:BEBC5Dle
あ、すいませんhogehogeではxyzを呼び出す以外にも処理を行うものとします
そうでないとxyzをメンバ関数にしてhogehogeなくせってことになるので
0819デフォルトの名無しさん
垢版 |
2018/08/17(金) 12:17:52.69ID:TtX4VAeH
> x()y()z()はhogehoge以外から呼び出されることはありません。

だったらラムダ式じゃね?
auto x = [this]{};
auto y = [this]{};
auto z = [this]{};
0821デフォルトの名無しさん
垢版 |
2018/08/17(金) 12:29:57.76ID:JC8oBFgD
メイヤーズは独立できるならメンバにせずに関数にしろって言ってた
0823デフォルトの名無しさん
垢版 |
2018/08/17(金) 12:37:52.08ID:lqMuboYf
処理内容によると思う。
一応、自分は、protectedのメンバ関数にするかなぁ。
0824デフォルトの名無しさん
垢版 |
2018/08/17(金) 12:49:54.76ID:UZUA85Xq
>>822
漠然過ぎてどうとも
ゼロから書く気はないんだろうから試行錯誤するのも含めてPythonのほうを勧めるよ
0825デフォルトの名無しさん
垢版 |
2018/08/17(金) 13:08:34.93ID:KaaDwp63
>>817
関数にできるってことはメンバ変数の参照とか他のメソッド呼び出しがないんだよね
なら関数にした方が微妙に速度が稼げる(thisを渡さずに済むから)
各々一回しか呼ばないなら呼び出し箇所に展開しても良いような気がする
0826デフォルトの名無しさん
垢版 |
2018/08/17(金) 13:39:31.71ID:BEBC5Dle
参考になりました。皆様ありがとうございました。
effective C++のメイヤーズ先生に従い、通常の関数にすることにします。

……あれ、そうするとその関数群だけで使う共通の変数ってメンバ変数にすべきなのかcpp冒頭で宣言してグローバル変数にすべきなのか
いやぁ難しいですね
0829デフォルトの名無しさん
垢版 |
2018/08/17(金) 15:10:01.00ID:ujK6h2XS
>>826
> ……あれ、そうするとその関数群だけで使う共通の変数
いや、そんなもんがあるならメンバ変数にするか、それらを構造体とかにまとめて引数で渡すとかしなよ
ファイルスコープだとしても今時グローバル変数は無いわ
0835デフォルトの名無しさん
垢版 |
2018/08/17(金) 17:52:51.84ID:TtX4VAeH
わざわざstaticにする強い理由があればそうするが
消極的な選択なら非staticのほうが何かと楽だぞ
0837デフォルトの名無しさん
垢版 |
2018/08/17(金) 18:06:46.13ID:H85EoLGL
ちょうど気になる話題だから聞くけど
OpenCVで1つの画像データを複数の関数で扱う場合って、引数として渡すのとグローバル変数として定義するのってどっちが良いのかな?(速度とかの面で)

無限ループで毎フレーム毎にWebカメラから読み取った画像を(グローバル)変数に代入するからそこでの速度とかメモリ管理の差とかあるのかな?
0838デフォルトの名無しさん
垢版 |
2018/08/17(金) 18:08:23.37ID:UZUA85Xq
>>831
そこまでして再発明したいんなら言語なんて何でもいいんじゃね?
ちなみに素養はお持ちなの?
そういう研究してたとか
0841デフォルトの名無しさん
垢版 |
2018/08/17(金) 19:04:11.30ID:/oSEwJ0G
>>837
OpenCVのMatなら何も考えずにコピーすると浅いコピーになる
浅いコピーのコストが問題になるならグローバルなりメンバなりにする方がいいのでは
0843デフォルトの名無しさん
垢版 |
2018/08/17(金) 19:10:12.86ID:IJ2e6Mcr
cv::Matがスマポみたいなもんだということを知らずにチャチャ入れてるなら黙ってたほうがいいよ
0844デフォルトの名無しさん
垢版 |
2018/08/17(金) 19:17:25.23ID:6wrElEJt
そんな事はしっている
目の前に浅いコピーって書いてあるし

浅いコピーよりも当然参照やポインタ渡しの方が速い
当たり前だ
sizeofでcv::Matのサイズを調べてみろ

構造体やクラスを渡すのに深い浅いに関わらず
コピーなんか使うなよ
0845デフォルトの名無しさん
垢版 |
2018/08/17(金) 19:28:06.57ID:KaaDwp63
>>837
> (速度とかの面で)

早すぎる最適化は諸悪の根源である

  ドナルド・トラン…
  じゃなくてクヌース
0846デフォルトの名無しさん
垢版 |
2018/08/17(金) 19:44:40.54ID:0e7dWRcF
今更になって>>825で言ってくれたことが理解できた
クラス内でメンバ変数使おうとするとメンバ関数じゃないとだめなのね。普通に分けたただの関数からじゃ呼べなかった
えーこういうもんなのか
0847デフォルトの名無しさん
垢版 |
2018/08/17(金) 19:55:12.57ID:RgiGOjCt
cv::Matとcv::Mat*のコピーコストの差を気にするくらいならデリファレンスのコストも気にしなきゃな。
0849デフォルトの名無しさん
垢版 |
2018/08/17(金) 22:11:59.07ID:6wrElEJt
>>847
構造体やクラスだと
ポインタや参照がデフォなんだよ

とりあえずポインタ、参照で渡す事を考える
これでは困る時にはじめて他の方法を考える

わざわざ無駄に重くしなくて良い
コードサイズも実行時間も使用メモリも増える
悪いことしかない
0850デフォルトの名無しさん
垢版 |
2018/08/17(金) 22:28:22.24ID:p6eculQx
>>838
世の中の殆どは再発明の繰り返しではないか
そこから新しいものが生まれる
>>840
機械学習、音声言語処理に興味ある
生成や知識獲得とかも
0854デフォルトの名無しさん
垢版 |
2018/08/17(金) 23:48:03.15ID:3Fyou0AL
>>848
間違って通常のポインタを引数に指定されないよう、共有ポインタの参照を引数にすることはあり得るでしょ。
0857デフォルトの名無しさん
垢版 |
2018/08/18(土) 10:32:16.38ID:zXZq/jKJ
Visual Studioのデバッグ実行ってクラッシュとかしてもコードのどこでクラッシュしたかを示してくれるのですごく便利なんですが、
ただでさえ重めだった実行が、2015から拍車がかかり、かなり使いにくくなってしまいました。
どうもvector等のSTLの範囲チェック等が重たいとのことで、たしかにSTLの使用割合が多いアプリほど重たい傾向にあります。
たしかに範囲チェックはありがたいのですが、多少デバッグ能力を妥協して動作を軽くできないでしょうか?

理想はデバッグ機能をカスタム実装してリリースモードで動作でしょうけど、
予想できないクラッシュ等に対応するのが難しいと思います。

ご助言、よろしくお願いします。
0861デフォルトの名無しさん
垢版 |
2018/08/18(土) 15:07:37.45ID:T6klohyz
質問ですが
class Foo {
public:
  int a[100];
  Foo();
};
というクラスにおいて、構築時にメンバa[]をゼロ初期化する簡単な書き方はありませんか

ちなみに
Foo::Foo() : a({ }) { }
とやったらエラーになりますた、
0874 ◆QZaw55cn4c
垢版 |
2018/08/18(土) 19:32:14.99ID:/9y7PjMS
>>872
何もかもがめんどくさっくて、C ドライブになんでもたんまりと仕込むのが好きなんですが、
1TB くらいある SSD ってお高いんでしょう?
0877デフォルトの名無しさん
垢版 |
2018/08/18(土) 21:21:58.94ID:F905Yoig
理由はわかるが柔軟性が欲しい

class A{
};
class B: public A{
};
temaplate<typename T>
void test(T a, T b){
}

A a;
B b;

test(a, b);//Error.型が一致しない。
test<A>(a, b);//ok.明治すればok
0880デフォルトの名無しさん
垢版 |
2018/08/19(日) 00:05:39.35ID:RqnFNWUi
>>878
こうすればokというのはわかるけども面倒
template<typename LT, typename RT>
void test(LT const& a, RT const& b){

}
0881857
垢版 |
2018/08/19(日) 01:30:39.96ID:KCtnHGyc
>>860
ありがとうございます!
これでやってみます!

>>858
vim、興味深いですが、慣れるまで時間がかかりそうですね^^;
0882デフォルトの名無しさん
垢版 |
2018/08/19(日) 09:02:49.22ID:qd68oMAq
じゃあメモ帳で。
0883デフォルトの名無しさん
垢版 |
2018/08/19(日) 09:12:46.20ID:qaYG8ur7
notepad++かサクラエディタ

ttps://forest.watch.impress.co.jp/library/software/notepadplusp/
ttps://sakura-editor.github.io/download.html
0884デフォルトの名無しさん
垢版 |
2018/08/19(日) 09:25:18.62ID:wM6XArJ0
vim は、

迷ったら、Esc を押して、コマンド入力モードにする。
そこで、a を押せば、append 文字入力モードになる

:q! 保存せずに終了
:wq 保存して終了
0887857
垢版 |
2018/08/19(日) 10:56:19.69ID:KCtnHGyc
自分はサクラエディタを10年以上愛用しています。
VisualStudioはコンパイラ兼デバッガとして利用してます。
0888デフォルトの名無しさん
垢版 |
2018/08/19(日) 14:03:03.06ID:5+hPFDRj
俺の main.cpp が 9万5千行 を超えた
ファイルサイズにして2.37MBある
クラス内でなら前方参照が可能なC++の盲点をついて
適当な struct でプログラム全体を丸ごと囲って
前方参照しまくり & ヘッダに全部書くスタイルで
一つのファイルに全部押し込めた
C++サイコー
0889デフォルトの名無しさん
垢版 |
2018/08/19(日) 14:03:58.10ID:5+hPFDRj
ちなみにコンパイルが遅くなるのと
コード補完が重くて使い物にならなくなるので
素人にはお勧めしない
0891デフォルトの名無しさん
垢版 |
2018/08/19(日) 14:20:44.33ID:5+hPFDRj
大丈夫
サンデープログラマーで俺一人だけしか書かないから
ソースコードも公開してないしな
0894デフォルトの名無しさん
垢版 |
2018/08/19(日) 15:04:46.82ID:5+hPFDRj
こういうのは怖いもの見たさみたいなのもあると思うし
これだけでコンパイルして動くものでもないので一応ソースコード
あまりにもアレで、そっ閉じだろうけど
http://www.geocities.jp/notenop/tomato_player/main.cpp

コンパイル済みのソフトは
http://www.geocities.jp/notenop/tomato_player/index.html
からダウンロードできる

非同期処理に俺が思いついた横断的でトリッキーなアイデア
https://qiita.com/notenopg/items/40571e69986a58b888a0
↑が使われている
安全にキャンセル出来なきゃ await の意味ないでしょ!ってなもんで
でもなかなか理解されないんだよなぁ、すごいアイデアだと思うんだが

それからツリービューのアイテムのピン止めのアイデアは
お気に入りやタブの代わりになって画期的だと思うんだが
何故マイクロソフトがエクスプローラに実装しないのか謎
特許関係かね
あとはフォルダ階層をそのまま扱える木構造なプレイリストとか

そんなことやってたら9万行超えました
ちなみにUIはDirectXでちまちまフルスクラッチで手書き
その代わりその辺のソフトに負けない速度で、4K対応
0895デフォルトの名無しさん
垢版 |
2018/08/19(日) 15:07:41.51ID:5+hPFDRj
庶民には理解できなくても
プログラマであるあなたたちなら
ピン止めできるツリービューが如何に画期的か理解できると思うんだよね
タスクバーでも何でもピン止めの時代なのに
ツリービューもピン止めできて良いと思うのよね
0896デフォルトの名無しさん
垢版 |
2018/08/19(日) 15:09:21.21ID:5+hPFDRj
ああ、ツールバーとかスクロールバーとかのレベルで
全部フルスクラッチでDirectXで手書きだから
0904 ◆QZaw55cn4c
垢版 |
2018/08/20(月) 18:47:45.43ID:VU5jvdn2
>>901
昔から使われている原始的といってよいビルドツールです
makefile に依存関係を書いておいて、コマンドラインで「 make -j」と起動すると、記述した依存関係にしたがってコンパイル・リンクが行われます
0905デフォルトの名無しさん
垢版 |
2018/08/20(月) 18:59:55.06ID:ftO9aq8g
Linuxなんかで配布されたソースから実行ファイルを作成したいって時にお世話になります
0907 ◆QZaw55cn4c
垢版 |
2018/08/20(月) 20:46:46.88ID:VU5jvdn2
>>906
>>900 は make を C で記述するものであり、コンパイル自体について記述するものではありません
0909デフォルトの名無しさん
垢版 |
2018/08/21(火) 00:03:12.90ID:Y1eCmHG/
C++自体の本はたくさんあるのにビルドやプロジェクト構成について解説した本って全くないよな
コピペで受け継いできた秘伝のMakefileやconfigureが蔓延してるのなんとかしてくれ
売れないだろうがCMakeの解説本が一冊欲しい
0910デフォルトの名無しさん
垢版 |
2018/08/21(火) 00:06:59.04ID:FygfW+En
cmake はつい最近のVisual Studio 2017アップデートで標準インストールされるようになったから潜在需要あるかもね…。
0911デフォルトの名無しさん
垢版 |
2018/08/21(火) 00:51:54.00ID:zakr4cIe
なんでビルドツールっていつも怪物化しちゃうんだろうな
makeがもう誰も手に負えない怪獣のくせにずっと定番に居座ってて、「Makefileを作るツール」が乱立してそれぞれ怪物化してるの勘弁してほしい
0912 ◆QZaw55cn4c
垢版 |
2018/08/21(火) 01:03:38.38ID:Wpz7rvAB
>>911
>makeがもう誰も手に負えない怪獣

make ですら怪獣になるのだったら、他の高機能ビルドツールはとっくに破綻している現状だったのか!と、ふと
0913デフォルトの名無しさん
垢版 |
2018/08/21(火) 01:35:58.44ID:mIqstMqN
makefileなんて複雑な事求めないなら手でかけるレベルだよ
これが複雑で手に負えないとなると、プログラミングも怪しくなる
0914デフォルトの名無しさん
垢版 |
2018/08/21(火) 01:36:31.95ID:Y1eCmHG/
ビルドについての教育がないがしろにされてるのが全ての元凶
ある程度以上の規模のプロジェクトを構成するベストプラクティスが示されているところを見たことがない
適当に好きなところから取ってきて動けばいいやくらいに改変して使ってるのが現状
0917デフォルトの名無しさん
垢版 |
2018/08/21(火) 11:24:41.92ID:mIqstMqN
したいという意思があるなら、がんばって理解も出来るだろう
そこまでしなくても、最低限のルール覚えれば使える
0918デフォルトの名無しさん
垢版 |
2018/08/21(火) 11:53:12.22ID:gERn4ySS
>>915
goto有害説をもじってるんだなw

Makefileを書いていていつも思うのは
ソースファイルの依存関係はソースファイルの中に書いてあるのに
それをまた二度手間で書かねばならないのがイヤ
面倒くさいのはともかく間違えやすいから
0925デフォルトの名無しさん
垢版 |
2018/08/21(火) 19:40:42.98ID:Y1eCmHG/
WindowsでCMakeはfind_packageでだいたい詰む
vcpkgで対応できなければ結局自分で書くはめになり、面倒くさくなってmingw使うかVSのプロジェクトと同居することになる
0926デフォルトの名無しさん
垢版 |
2018/08/22(水) 16:26:31.16ID:BT6ndhEb
C++ とは直接関係ないけど make/Makefile は擬似ターゲットを使って
バッチ的な定型処理を1個のファイルでまとめて管理できるのが便利でね。

make find WORD=...
全ソースから WORD= で指定した単語を含む行を検索、みたいな。

自分で作った便利ターゲットの使い方を usage: に書いとくのを忘れるけど。
0928デフォルトの名無しさん
垢版 |
2018/08/22(水) 19:10:59.67ID:lMaJ9TV4
C言語のビルドシステムならC言語で書けるようにするべきだと思うのだがよく分からない専用の言語を使わされるのは何故
この手のスクリプト言語は可読性がデバッガもないから中身を探るのが難しすぎる
0930デフォルトの名無しさん
垢版 |
2018/08/22(水) 20:50:10.20ID:4/HlUcDP
C++のビルドツールといえばboostでお馴染みのbjam
実質boost専用に作ってるだけなのにあんな聳え立つ糞の山になっちゃうんだからビルドツールって怖いね
0931デフォルトの名無しさん
垢版 |
2018/08/22(水) 22:31:38.77ID:G7PvCZFg
ソフト名がまだ決まっていないけどプログラム開発がスタートするって一般的だと思うんですが、
こういうときってコードネームを付けますよね?
このとき、VisualStudioのプロジェクト名もコードネームにしますよね?

アプリのウィンドウキャプションとかはアプリ名が決まり次第反映させられますけど、
プロジェクト名は途中で変えられないので、そのままになってしまいますが、しょうがないですよね?

要は社内の開発で問題なければOKで、
リリースしたときにコードネームがどこかに混じってしまわないように気を付ければいいだけですよね?

みなさんがどうされてるのか気になったのでお聞きしました。
0932デフォルトの名無しさん
垢版 |
2018/08/22(水) 23:03:51.57ID:4/HlUcDP
必要なら変えるよ
slnやvcxprojはただのxmlだから名前変えるだけならそんなに難しくない
0933デフォルトの名無しさん
垢版 |
2018/08/23(木) 00:06:20.88ID:0/a4zf/K
英国ポエムシリーズでしょう
bjam=ブージャムは言うまでも無く、パンジャンドラムすらも無論英国のポエムから採られた
他にも兵器界隈ではスナークとかが存在するのは周知の通り

日本だと仏教用語から採ればいいんじゃあないですかね
0934931
垢版 |
2018/08/23(木) 00:10:54.70ID:U43QDDsh
>>932
なるほど〜、プロジェクト関連ファイルを編集することで名前を変えることはできるんですね。
なら気兼ねなく最初はコードネームにしときます。
ありがとうございました^^
0935 ◆QZaw55cn4c
垢版 |
2018/08/23(木) 22:00:21.31ID:NMfUyUL+
std::ref() について教えてください

void f(:ostringstream &os) { ... }
int main() {
ostringstream s;
std::thread(f, std::ref(s));
...

とありましたが、なぜ呼び出し側で「おまじない」のstd::ref() が必要なのか理解できません
どんなときに呼び出し側で std::ref() が必要なのでしょうか?

テンプレート関係かと思いましたが
https://ideone.com/7fF53F
は問題なく、std::ref() が必要となるプログラム例を思いつくことができません

よろしくお願いいたします
0939 ◆QZaw55cn4c
垢版 |
2018/08/23(木) 22:52:37.79ID:NMfUyUL+
>>938
コメントありがとうございます
コピーコンストラクタが禁止されている std::cout をテンプレート引数にわたす場合で理解できました(かもしれません)
https://ideone.com/3eqEJY

一つ質問ですが、私なら、このプログラム例の y()
template<class T> void y((*f)(), T &os) { ... }
のように、テンプレートを書く時点で参照に書いてしまうのですが、
あえて非参照なテンプレート引数を書く「便利さ」みたいなものはありますでしょうか?
0940デフォルトの名無しさん
垢版 |
2018/08/24(金) 02:37:15.13ID:kcQyW4E+
大阪はいたって平和
しょぼいにもホドがある
0941 ◆QZaw55cn4c
垢版 |
2018/08/24(金) 03:55:21.10ID:A5L5xSI8
>>939
>あえて非参照なテンプレート引数を書く「便利さ」みたいなもの
std::thread のコンストラクタを眺めていて気が付いたこと…これ、可変長テンプレートですね
0944デフォルトの名無しさん
垢版 |
2018/08/25(土) 08:53:09.59ID:/11s7nnG
template <typename T, typename... ARGS>
class nested_error : public std::nested_exception, public ARGS...
{
public:
nested_error(T const& t, ARGS const&... args) : T(t), nested_error(args...) //C3511
{
}
nested_error(T const& t) : T(t)
{
}
};
何かうまい手ない?
0945デフォルトの名無しさん
垢版 |
2018/08/25(土) 13:51:57.64ID:rL3qzGy6
そりゃまー、実体化した内部ではTは決定済みだろうから無理だろう。
Anyつかうとか・・・。
0946デフォルトの名無しさん
垢版 |
2018/08/25(土) 14:24:43.54ID:rL3qzGy6
あ、すまん。おかしなこと言った。
えーっと、変数が一個じゃ足りないな。
イニシャライザーリスト使うか、下位関数にキックするか。
0947デフォルトの名無しさん
垢版 |
2018/08/25(土) 15:05:48.05ID:XmdDRLnv
そもそもコンストラクタの委譲は再帰禁止だったと思うが
別のクラステンプレートのメンバ関数とか関数テンプレートで再帰するしかないと思う
0949デフォルトの名無しさん
垢版 |
2018/08/25(土) 16:53:35.24ID:rL3qzGy6
そういえば、例外の時にメモリ確保したらなんか弊害あるんだっけ?
昔、例外投げるときはメモリが足りなかったりとかクリティカルな状況だからやめろって言われたような気がする。
どうやったっけ?
0950デフォルトの名無しさん
垢版 |
2018/08/25(土) 18:24:33.46ID:/11s7nnG
>>948
なんか面白そうなのうpしてくれてありがとう
すまん、今かなり酔っ払ってる
素面に戻ってからじっくり読むから
ちょっと待ってて
0952デフォルトの名無しさん
垢版 |
2018/08/25(土) 19:23:40.93ID:r5O9PJUC
>>949
> そういえば、例外の時にメモリ確保したらなんか弊害あるんだっけ?
メモリー不足による例外発生時だとその例外処理時のメモリー確保自体が失敗するから例外処理(例えばログ出力)ができなくなるってこと
0957デフォルトの名無しさん
垢版 |
2018/08/25(土) 22:12:01.59ID:rL3qzGy6
https://wandbox.org/permlink/uEH5L9KBV9L1BdYn
うはー、気が向いたから、コンストラクタに推論させようと思ったら手間食った。あー疲れた。
しかし、理解が深まって良かったかな。うえー。

>>956
投げた本人ならできるけど別のところから飛んできたやつはつかめなくない?
0958デフォルトの名無しさん
垢版 |
2018/08/25(土) 22:26:38.94ID:rL3qzGy6
しかし、色々試したが結局うまくいかず、解説ページの死角にぽろっとあるのが最高にリアル。
0959デフォルトの名無しさん
垢版 |
2018/08/25(土) 23:19:11.18ID:5ar3I1wr
>>957
例えばA<B, C>とA<D>は全く別の型なのだから、どっちの型が飛んでくるかわからないのに両方catchするのは無理でしょ。
Base型で試そうとした痕跡があるけど、catchした先でA<B, C>またはA<D>の関数を呼び出そうとしているからそれもできない。

「別のところ」から飛んでくる例外の型はコンパイル時には確定しているのだから、メタプログラミングが通常やるように、「別のところ」のテンプレ引数でthrowする型を決定できるようにすればいいんじゃね?
0960デフォルトの名無しさん
垢版 |
2018/08/25(土) 23:23:12.69ID:rL3qzGy6
>>959
うん。多分それで困ると思う。>>944が!
メタプロやらないから可能性は感じるけど限界がわからない。
まぁ、俺は興味で書いただけだから、>>944がどうするかはシラネ・・・。
0961デフォルトの名無しさん
垢版 |
2018/08/25(土) 23:24:09.84ID:Efgla6YW
>>939
>あえて非参照なテンプレート引数を書く「便利さ」みたいなものはありますでしょうか?
threadの場合デフォルトで参照だとdata raceを気づかないで起こす可能性が上がる。
設計としてスレッドの引数はコピーして渡すほうが安全性は高い。

一般論で言えば一時オブジェクトを受け取るならconst&になるけど、
これだとmoveできないので逆に性能が劣化する場合がある。
0962デフォルトの名無しさん
垢版 |
2018/08/25(土) 23:32:37.06ID:Efgla6YW
最近の提案なんかではメモリ確保失敗は回復が難しく一般的な例外とは
区別して考えるのが合理的なんじゃないかって話が出てきてる。
んで新しく静的な例外を導入しようっていう話が上がってる。
0965デフォルトの名無しさん
垢版 |
2018/08/26(日) 02:56:15.82ID:zhFpXu2e
ヒープが無くなったら、HeapCreateで作れば良いのに。
by マリー・アンチョワネット
0966デフォルトの名無しさん
垢版 |
2018/08/26(日) 14:06:36.91ID:Q8b2w7YQ
メモリがどれくらい必要なのか簡単に静的解析できたらいいなあと思うけど
再帰関数のメモリ消費量とか計算難しそう
0967デフォルトの名無しさん
垢版 |
2018/08/26(日) 14:10:00.99ID:BwlGzYMc
mcc68kなんかは-Sでアセンブラ出力させると
コメントにスタック使用量を入れてくれてたな
0968デフォルトの名無しさん
垢版 |
2018/08/26(日) 19:26:38.30ID:OiuVvKbz
割り込みになるけどちょっと質問させてください
struct hoge {

  int a, b, c;

};

auto a = hoge{1, 2, 3};

auto b = int[]{1, 2, 3, 4};

aみたいに型を明示して中括弧でくくった一時オブジェクトは作れるけど、
bみたいに配列を明示して作ることって出来ないですかね?
単に文法上の質問なんで「やる必要あるのか」とか「std::array使え」とか「構造体でラップしろ」は無しでお願いします
0970デフォルトの名無しさん
垢版 |
2018/08/26(日) 19:34:14.95ID:OiuVvKbz
int[4]でもだめだったんですよね・・・・
というか今思いついて(int[4]){1, 2, 3, 4}でやったらいけました
お騒がしてすみませそ
0973デフォルトの名無しさん
垢版 |
2018/08/26(日) 20:19:57.43ID:qnZA5cjL
warning: pointer is initialized by a temporary array, which will be destroyed at the end of the full-expression [-Waddress-of-array-temporary]
0974デフォルトの名無しさん
垢版 |
2018/08/26(日) 20:21:33.00ID:hANAm2gW
https://ideone.com/A9Bccy
#include <stdio.h>

int main() {
  int* b1 = {1, 2, 3, 4};
  int b2[4] = {5, 6, 7, 8};
  int b3[] = {9, 10, 11, 12};
  fprintf(stdout, "b1:%u\n", sizeof(b1));
  fprintf(stdout, "b2:%u\n", sizeof(b2));
  fprintf(stdout, "b3:%u\n", sizeof(b3));
  return 0;
}

https://ideone.com/rJw9cK
#include <iostream>
using namespace std;

int main() {
//  int* b1 = {1, 2, 3, 4}; コンパイルエラー
  int b2[4] = {5, 6, 7, 8};
  int b3[] = {9, 10, 11, 12};
//  cout << "b1:" << sizeof(b1) << std::endl;
  cout << "b2:" << sizeof(b2) << std::endl;
  cout << "b3:" << sizeof(b3) << std::endl;
  return 0;
}
0975デフォルトの名無しさん
垢版 |
2018/08/26(日) 20:22:49.21ID:hANAm2gW
c
b1:8
b2:16
b3:16

c++
b2:16
b3:16
0976デフォルトの名無しさん
垢版 |
2018/08/26(日) 20:27:01.66ID:hANAm2gW
うん
やっぱり
このスレにもアホしかいない
0979デフォルトの名無しさん
垢版 |
2018/08/26(日) 20:31:32.32ID:hANAm2gW
オレは自分を天才とか思ってない
オレは天才じゃないが普通の人間だ

この板にいる低学歴知恵遅れが
まともじゃないのがヤバイといってるワケ

教育の程度や知能に大きな問題があるといってるわけ
しかもその自覚がない
まずまともな人間になるところから
0980デフォルトの名無しさん
垢版 |
2018/08/26(日) 20:44:37.30ID:qnZA5cjL
誤解したまま帰った?

auto a=(int[4]){1,2,3,4};

for(int i=0;i<4;i++)

{

  printf("%d \n",a[i]);

}

出力
0
0
0
0
0981デフォルトの名無しさん
垢版 |
2018/08/26(日) 21:13:55.49ID:OiuVvKbz
あー、すみませんautoって書いたのがまずかったですね
試してみたんですが、実際にはコンストラクタに渡すので大丈夫でした

autoだと配列の一時オブジェクトへのポインタになるからまずいですね
0985デフォルトの名無しさん
垢版 |
2018/08/27(月) 08:18:57.12ID:YiUsgylF
まったりとしてコクが無く、魚介類の生臭さを濃縮したような
スープと同じぐらい不味い
0987944
垢版 |
2018/08/27(月) 13:55:56.63ID:vY3QDx2y
>>948
お待たせ

俺っちの質問はnested_exceptionを使うケースなので、
948のコードでいうとBaseを多相的クラスにしといて
catch(Base&)で捕獲し、dynamic_castでBやCへの
アクセスを試みるというようなことだ

ところで
template<class... Ts> overloaded(Ts...)->overloaded<Ts...>;
これが読めん、何やってるのか教えてくれんか
0992デフォルトの名無しさん
垢版 |
2018/08/27(月) 16:02:51.38ID:r/wp9j7z
わたくしがC++で書き上げた超高性能次スレ立てマシーンなら次スレなんて一発ですよ
0996デフォルトの名無しさん
垢版 |
2018/08/28(火) 06:22:11.76ID:XE/KW9kf

板復帰(OK!:Gather .dat file OK:moving DAT 703 -> 686:Get subject.txt OK:Check subject.txt 703 -> 690:Overwrite OK)0.84, 0.77, 0.74
age subject:690 dat:686 rebuild OK!
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 45日 2時間 48分 54秒
10021002
垢版 |
Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。

ニューススポーツなんでも実況