C++相談室 part143

レス数が900を超えています。1000を超えると表示できなくなるよ。
2019/06/15(土) 13:51:53.57ID:DKQ0QQLH0
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。

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

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

■長いソースを貼るときはここへ。■
 http://codepad.org/
 https://ideone.com/

[C++ FAQ]
https://isocpp.org/wiki/faq/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)

----- テンプレ ここまで -----
VIPQ2_EXTDAT: default:vvv:1000:512:----: EXT was configured
2019/07/14(日) 10:22:25.79ID:yqvJtNKTa
俺はクソだった!
2019/07/14(日) 10:46:18.68ID:6RRDIuRx0
クソでいいや
823デフォルトの名無しさん (スップ)
垢版 |
2019/07/14(日) 10:48:00.68ID:N6Jg+9Qod
そもそもC++書いてる奴は総じてクソ
2019/07/14(日) 10:52:11.91ID:kbgTNG980
たまにマジでテンプレート否定する奴がいるけどどういうコード書いてるんだろうとは思う
ならもうC言語でいいやんと
2019/07/14(日) 11:25:30.46ID:IlYB/IHkM
言語の機能否定するやつはもう消えろと思う
2019/07/14(日) 12:05:51.96ID:3jO2eFHc0
>>820
2019/07/14(日) 12:17:26.84ID:bTXRhkvlM
>>82
最近関数型言語かぶれ増えたよな
一時期のOO厨と同じ
というか実行効率重視しないのにC++使ってるまぬけでしかない
828デフォルトの名無しさん (ワッチョイ)
垢版 |
2019/07/14(日) 13:03:52.75ID:t8pNnhD80
Template なかったら事前にタイプ規定する言語使うの最早ただの苦行やん...
2019/07/14(日) 13:07:41.55ID:Hni5ei2L0
増えたといっても全部漏れの自演だがな

やっぱ最適化とかmutableなオブジェクトの使用みたいな危険行為は
プロファイルをとった上で
ポイントを絞ってやるべき伝家の砲塔だと思うんですよねー
2019/07/14(日) 14:22:08.64ID:bTXRhkvlM
>>829
それテストドリブン原理主義と同じだよ
現実のC++のプロジェクトでワークしない

実際のとこお前だってそのポリシーでやりきったことないだろ
あるいはそもそも性能要件なんかないただの趣味プログラミングだろ
2019/07/14(日) 16:39:34.94ID:QM43l4Yx0
>>829
>伝家の砲塔
×
◎伝家の宝刀
2019/07/14(日) 16:58:06.88ID:Hni5ei2L0
ていうか真に速度が求められる箇所ではオブジェクトの生成とかせずに
テーブルで済ますように極力するから極限までの高速化を求められるシチュエーションでは
immutable縛りはあんまパフォーマンスの制約要因にならないキモス
2019/07/14(日) 17:21:37.08ID:Hni5ei2L0
で実行速度が求められるあまりmutableな書き方しかできない最たるもの(と一般に考えられている
再起が関係するアルゴリズムとかでも再起の深さが有限なら原理上FSMで表せるし
そうしたときに問題になるテーブルサイズも問題によっては問題固有の特質に着目して削減ができるので
深さとcurrent stateの2つぐらいのmutable要素だけでやれる
スゲー手間がかかるのであんま一般的ではないが
2019/07/14(日) 18:55:48.27ID:iENt936B0
なんかコンテストとか競技系の小規模な問題しかやったことない人間の匂いがする
2019/07/14(日) 20:58:42.72ID:VdcfVJxm0
画像処理用の画像クラスでimmutableとか最悪だろ。
2019/07/14(日) 21:04:10.52ID:kbgTNG980
宣言的プログラミング!
(実装詳細はライブラリにやってもらう)
2019/07/15(月) 00:35:07.20ID:MjmXYKrZ0
今時の性能ならフル描画しなおしでも結構なんとかなるぞ
2019/07/15(月) 01:11:27.79ID:md6OUoiD0
画像の書き換えまたはフィルタリングを
In-placeで処理したからといってなんか高速化になりましたっけ…
In-placeの方がキャッシュの有効活用にはなるかもしれんが
2019/07/15(月) 01:15:15.20ID:md6OUoiD0
In-placeの方がキャッシュの有効活用にはなるかもしれんが、
画像う処理とかデータサイズ>2時キャッシュサイズなので
もともとキャッシュのrefill上等な前提な印象、
つまりはIn-placeにしたからといって誤差の範囲内
2019/07/15(月) 04:45:28.21ID:timtx4iU0
ネーミングセンス糞すぎて俺のgithubアカウントに○○○Manegerとか○○○Analyzerみたいな名前のリポジトリが並んでるんだけどどうすればいい?
2019/07/15(月) 05:19:41.70ID:AcRJIuvS0
Manegerは恥ずかしい
842デフォルトの名無しさん (スフッ)
垢版 |
2019/07/15(月) 07:09:19.75ID:rgXkaLbtd
analyserとかちょー卑猥な響きだよね(´・ω・`)
2019/07/15(月) 07:35:25.61ID:ex33LrHm0
>>840
ネーミングセンス云々の前に英語をちゃんと勉強するべきだな
2019/07/15(月) 09:49:59.26ID:md6OUoiD0
○○○Manや○○○Analと短縮表記すれば良い
2019/07/15(月) 09:59:50.02ID:9PTNja4Sa
クラス名は長くして変数名を短くするのがいい
2019/07/15(月) 10:22:06.22ID:AcRJIuvS0
プロジェクト名の話だと思う
2019/07/15(月) 10:38:39.02ID:9PTNja4Sa
本当だ...
2019/07/15(月) 10:50:02.87ID:r7SsHRFS0
初心者前提なのだから1ピクセルずつ操作することを考慮しろ
2019/07/15(月) 12:31:46.06ID:md6OUoiD0
英語力という点では「登録する」(動詞)を「regist」だと思い込んでいるケースが
メジャーなライブラリでも散見さるる、
2019/07/15(月) 12:37:01.83ID:fHVeR6bP0
あれ本当に恥ずかしいからやめて欲しい
恥ずかしいと思ってない日本人が多すぎるという事実自体が恥ずかしい
2019/07/15(月) 12:37:18.11ID:Xch0qlQL0
それはconfigureをconfigって略すのと同じだろ
2019/07/15(月) 12:40:40.78ID:r69UXvdn0
恥ずかしい人がここに
2019/07/15(月) 12:40:47.47ID:AcRJIuvS0
registerが名詞だと思ってるのか
2019/07/15(月) 12:46:03.84ID:timtx4iU0
>>841
誤字だと分かりきっているものを茶化さないでおくれ
2019/07/15(月) 12:47:25.64ID:fHVeR6bP0
本当に省略形なら"registed"だの"registing"だの"registation"だのはどう説明付けてくれるんだろうね
2019/07/15(月) 12:53:03.24ID:+RJOjipn0
おっウォーニングの話か?
2019/07/15(月) 13:01:38.24ID:lxHurSyi0
エンカウントとか?
2019/07/15(月) 13:31:00.46ID:ex33LrHm0
>>853
registerは名詞でもあるだろ
ただ意味が限定される(帳簿とかこの業界だとCPUのレジスタとかになる)ので登録という意味ならregistrationの方がいい
2019/07/15(月) 14:00:46.85ID:P+OOoIdTM
warningとかもなるべく正しい(近い)発音を心がけてるんだけど
nullだけはヌルだわ
2chリスペクトだと思ってるw
2019/07/15(月) 14:06:27.37ID:Nn+acajv0
>>849
resist と書かれちゃうよりはましだとおもいますぅ
2019/07/15(月) 14:07:48.53ID:Nn+acajv0
>>859
ドイツ語ではヌルでいいんですよ、ドイツ語と言い張ればいいのではないでしょーか
2019/07/15(月) 14:15:07.13ID:P+OOoIdTM
なるほど
ヌルポはヌルポッセンドルフの略と思っておきます
2019/07/15(月) 14:18:25.23ID:r7SsHRFS0
nullはむしろ英語読みが間違っている

外来語導入して読み方変えているのを間違いと言うなら
2019/07/15(月) 14:23:34.76ID:reKP8a27M
大規模開発やったことないんだけど、C++の仕事ってやらせてください
2019/07/15(月) 14:25:17.59ID:timtx4iU0
自分で仕事を作れば何でもできるよ
2019/07/15(月) 15:22:17.78ID:vaP/RuJr0
正直、メモリ管理もできないような言語の仕事なんか限定されすぎだろうよ。
ゲーム業界くらい?

俺は一応社内システムの仕事でやってるけど、 c++の機能フルで使えないからストレスだわ
c言語のソースそのままコピーしたであろう共通関数あったり、既存ソースはポインタ生で使ってたり、 コンパイラーがc++03だったり、boost使えなかったり、微妙
2019/07/15(月) 15:55:13.08ID:J3bo3XLhp
その程度でぶーたれてんのか
入って半年とかか?
868デフォルトの名無しさん (ワッチョイ)
垢版 |
2019/07/15(月) 16:11:03.46ID:ioQvo5hA0
俺もナマポ暮らしになりたいわ
2019/07/15(月) 16:35:55.59ID:TrI7uaVY0
規模次第だけど社内システムなんて結構好き勝手できるから気に入らない部分はどんどん新技術に載せ替えて行けば?
2019/07/15(月) 16:55:43.24ID:timtx4iU0
デスクトップアプリもスマホアプリも当然C++
2019/07/15(月) 17:05:26.06ID:71Nm6o/V0
boostいらんわ
2019/07/15(月) 17:08:12.98ID:timtx4iU0
プロジェクトのひな形を生成したときにまずすることはboostのパスを入力すること
2019/07/15(月) 17:26:52.36ID:qXQUtn8qM
vcpkg install boost:windows-x64
2019/07/15(月) 17:49:20.12ID:timtx4iU0
x64-windowsダルォ?
2019/07/15(月) 18:05:18.40ID:vaP/RuJr0
>>869
しがないフリーランスだからその権限がないっす。
親方が気に入らなければ変えられません使えません。
俺「これーcharじゃなくてstd ::stringにした方がシンプルじゃないっすかねー・・・」
敵「既存がそうなってるからchar使ってね」
俺「はい」
2019/07/15(月) 18:39:11.23ID:1J86p0R40
>>875
ちゃんと相手にわかるメリットを示せよ。実装にかかる時間とか安全性とか信頼性とか、あるだろ。
無いなら既存に合わせるのが正解だろうよ。
2019/07/15(月) 18:48:34.62ID:oc4A+BFp0
>>876
既存のやり方がそうであるのに、流石にそれは許されないでしょ
2019/07/15(月) 18:50:01.71ID:timtx4iU0
「正しい」形にすることは何よりも優先されることなんだが
2019/07/15(月) 18:55:19.89ID:TrI7uaVY0
>>875
そういう案件ならしゃーないんじゃない?
上が細かな技術的なとこまで意思決定権持っちゃってる残念な現場なんて腐るほどあるんだし
説得して環境を変えるのもありだけどフリーで入ってるなら頑張ったところで将来的に得するかは微妙だろうね
2019/07/15(月) 18:55:25.91ID:ex33LrHm0
何が正しいかはケースバイケース
保守する社員がcharしか理解できないボンクラと言うことも考えられる
2019/07/15(月) 18:55:44.39ID:Voexy70f0
>>878
関係者がみな納得できる共通の「正しい」があるならそれでいいと思うよ
2019/07/15(月) 19:05:04.52ID:vaP/RuJr0
>>879
まさにそうなんだよねぇ。
「\0飛んだだけで暴走するcharなんか捨ててしまえ」って熱弁して血反吐吐いて納得させても将来得するの俺じゃねぇし・・・って言う
883デフォルトの名無しさん (ワッチョイ)
垢版 |
2019/07/15(月) 19:29:53.08ID:uSWgDnpR0
>>882
説得先も大概だけどそんな理由で入れ替え勧めたってウンとは言わないでしょ…
2019/07/15(月) 19:30:09.25ID:uSWgDnpR0
ageてしまったごめんなさい
2019/07/15(月) 20:04:45.07ID:pjR6BG980
char*とstd::stringを比較するんじゃなくて、スタックとヒープの違いで安全性・安定性をアピールしたほうが良かったんじゃないかな。
2019/07/15(月) 20:13:41.55ID:MjmXYKrZ0
別にインターフェイス部分だけcharで内部ではstring使えばいい話だろ?
まあ多分インターフェイスなんて概念自体なさそうな現場には見えるが。
2019/07/15(月) 20:28:18.61ID:7B/nougm0
>>875
メリット説得して、さらにstringに馴染みがないやつへの説明
さらにその変更によって万一(どころではないと思うが)生じた不具合に対する責任を負う覚悟があり
それら全部タダ働きでいい、というのならOKしてくれるかもな
2019/07/15(月) 20:32:17.87ID:fPWDFa890
>>880
数年後に保守する奴が新人ってケースは普通にあるからねえ
2019/07/15(月) 23:10:03.23ID:MjmXYKrZ0
てかこのレベルでグダグダならc++なんて一番使っちゃいけないものなんだけどね。
2019/07/15(月) 23:18:29.56ID:pvtIibLv0
>>886
でもさ、どのメモリに入ってるかも分かんない文字列ポインタなんか、使いたくねーってならないか?
2019/07/15(月) 23:30:06.80ID:oc4A+BFp0
>>889
C++使っちゃいけないとか、C++使ってるやつは自意識過剰のクズばっかだな
Linusも言ってたし
2019/07/15(月) 23:37:28.29ID:+RJOjipn0
むしろchar使ってる箇所stringでラップして新人さんにもメンテしやすくするべき
893デフォルトの名無しさん (スフッ)
垢版 |
2019/07/16(火) 01:26:16.84ID:0uDObdGpd
クソなところならどうせそこ直しても所詮うんこの一角だしクソなだけ
いいところなのになんだかなー思うんなら訴えかけて良くしてやればいい
クソなところなんてどうせ金も払わんし出来る限り関わりを持たずにずらかるのが一番(´・ω・`)
2019/07/16(火) 06:17:44.96ID:osN3S5RL0
>>892
>>887
2019/07/16(火) 16:19:36.53ID:Df6fhjhOM
C++で個人開発したいんだけど、やりたいものが思いつかない
個人的にはC++らしいものをやりたい
→openGL
やってはみたけど、webのレイマーチングにはまる
→レイトレーシング
今もやってる趣味ではある
→競プロ
人生で一番費やしてるプログラミングの趣味
2019/07/16(火) 20:27:49.59ID:Z97hyaL80
test1 = 0x0123¥ntest2 = 0x0111¥n......
みたいなstring文字列から、指定のtest番号の0x0123みたいな6文字を取り出す関数を作りたい
引数をstring型文字列、戻り値を16進数のstring文字列みたいな

test1 と = の間のスペースの数が1つなのか複数なのかがランダムだから、それを考慮してうまく抜き出す方法ないかな?
(test1って名称が本当は別の文字列だから、見映えよくするためにスペースで調整されている)

regexを使った正規表現しかないかな??
今は指定の文字列をfind検索して、指定の文字列+1の位置から、全部文字列切り取って、スペース= 0x0111¥n.....みたいな文字列を一度作ってからさらにfindでやってるのだけども
2019/07/16(火) 20:50:39.00ID:nqFwpBh+0
>>891
通常の開発は一人でやるもんじゃないんだよ。
自分はできるからですませてるうちはプロジェクトではゴミだから。
2019/07/16(火) 20:51:55.23ID:LY1lZd1g0
>>896
まずスペースを削除すれば
2019/07/16(火) 21:01:39.66ID:IKrvu7vGa
>>896
面倒なのでregexに1票
2019/07/16(火) 21:02:58.38ID:LGntUIQm0
C++標準が3年ごとにリリースされるのはなぜ? 2019/07/16 18:06 後藤大地
https://news.mynavi.jp/article/20190716-860461/

2012年以降、C++標準化委員会は3年ごとに新たなC++標準(C++14、C++17)をリリースして
いる。次のC++標準はC++20として作業が進められており、タイムスケジュールどおりの
リリースが予定されている。C++98とC++11のリリースにはそれぞれ9年ほどの時間が
かかったことを考えると、この7年間ですでに2つのC++標準が3年ごとにリリースされたのは
大きな変化だ。

ISO C++標準化委員会の議長でありMicrosoftでソフトウェアアーキテクトを務めるHerb
Sutter氏が2019年7月13日(米国時間)「Draft FAQ: Why does the C++ standard ship
every three years? - Sutter's Mill」においてその理由を説明した。(中略)

標準化委員会はC++11をリリースした後にこのモデルを見直し、タイムスケジュールベース
でリリースするモデルへ変更。Sutter氏は、機能ベースで進めるやり方とタイムスケジュー
ルベースで進めるやり方を比較しつつ、結果的には、タイムスケジュールベースのほうが
業界全体でよい効果を持つことがわかったと説明している。同氏は「機能ベースのリリース
モデルには戻りたくない」と明言しており、現在のモデルの方がうまく機能していることを
主張している。(後略)
2019/07/16(火) 21:20:33.77ID:Z97hyaL80
>>898
!!!!!!
天才か!!!!!!!

>>899
regexのが安定なんかなぁ
2019/07/16(火) 21:38:36.46ID:OG5/ucZ10
文字列の切った貼ったはセキュリティ的に怖いからね
有り物で書けるならその方がいい
2019/07/16(火) 21:39:17.81ID:I+f7TCiw0
std::getlineで\n区切りで回してから
後は知らん
2019/07/16(火) 21:45:38.70ID:LY1lZd1g0
splitあれば改行で区切ってlist化するだけなんだけどな
Qt環境ならそうする
2019/07/16(火) 21:48:21.34ID:9Yfd/4AAM
trim関数的なものを作る
2019/07/16(火) 21:54:43.77ID:W8tOKWg20
=で分割した後
左右でfind_first_not_of,find_last_not_ofで空白以外まで切り詰めかな
2019/07/16(火) 22:00:47.16ID:QDcq5Heka
ためしに書いてみたけど遅い。。。
https://wandbox.org/permlink/OjG24U6M9RMITpgM
2019/07/16(火) 22:01:38.63ID:yujEo6vK0
>>897
では私はどうすればいいですか?
2019/07/16(火) 22:04:35.23ID:H30rEKCE0
Cですが。自力分割やregexよりは早い気がする
const char* s = "abc= 123";
sscanf(s, "%[^=]=%d", key, &value);
910デフォルトの名無しさん (アウアウウー)
垢版 |
2019/07/16(火) 22:05:19.31ID:QDcq5Heka
16進数を考慮してなかった
https://wandbox.org/permlink/Mkh7FDTFEydcFdFc
2019/07/16(火) 22:05:58.06ID:Qaka0H/h0
>>897
忘れたら他人
2019/07/16(火) 22:10:14.84ID:I+f7TCiw0
昔はドヤ顔でトリッキーコード書く奴いたが最近は見ない
理由は、
できる新入社員が入ってこない
年寄りは昔ドヤ顔で書いた自分のコードを十年ぶりくらいに保守して反省するから
2019/07/16(火) 22:24:54.49ID:Qaka0H/h0
真のトリッキーコードだったら地獄はむしろ最初も最初、
離陸前に訪れているはず

もうそんな悲劇は繰り返させないRustによって、
2019/07/16(火) 22:29:08.57ID:Qaka0H/h0
ていうか今日日スマホ系だとIDEに命ぜられるがままイベントハンドラを設けて、
インテリセンスに従って高水準APIを呼べばだいたいのところできてしまうるし…

バッドノウハウとか差別化のためのトリックがむしろ脚光
915デフォルトの名無しさん (アウアウカー)
垢版 |
2019/07/17(水) 00:30:14.40ID:OvMw+j5/a
初心者です。苦戦してます。お知恵を貸してください。
仮想端末を含んだ GTK+3 アプリを C++ で作りたいです。
gtkmm だと vte が使えない(?)ので、gtk-3.0 を使って試してます。
サンプルを下のリンクに置きました。

make すると main 最後の return app->run(window); の所で、
[no member named 'run' in '_GtkApplication']とエラーになってしまいます。
この部分は gtkmm の例から持って来たもなので、変える必要があるのですが、
gtk+3 ではどう書くのが正解でしょうか?よろしくお願いします。
あるいは、gtkmm でも vte を使う簡単な方法がもしあれば、教えてください。

Makefile
http://codepad.org/wldK76KY

main_test_3.cc
http://codepad.org/NopgbNXP

sample_3.h
http://codepad.org/BiQt354F

sample_3.cc
http://codepad.org/I1B7AyJL
916デフォルトの名無しさん (ワッチョイ)
垢版 |
2019/07/17(水) 01:22:30.12ID:fOq5lc1d0
>>915
個別のライブラリについては別スレでどうぞ

Gtkプログラミング on Windows!!!
https://mevius.5ch.net/test/read.cgi/tech/1147024203/
2019/07/17(水) 07:35:01.26ID:MynlIz/m0
個人開発したいとやったら、やるなと言う職業プログラマー
そんなにC++の弁護士気取りたいのか?
2019/07/17(水) 07:53:00.12ID:LHl19Ofs0
>>917
日本語でok
2019/07/17(水) 15:04:33.40ID:tb8FEgTSM
>>918
一言で言えば、C++らしいものを作りたい
なんかおすすめ教えてです
2019/07/17(水) 15:51:34.93ID:QuDmOW+q0
競技プログラムでもすればいいじゃん
レス数が900を超えています。1000を超えると表示できなくなるよ。