C++相談室 part145

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2019/09/13(金) 17:13:24.60ID:/ygW08Jq
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。

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

このスレもよろしくね。
【初心者歓迎】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/ (日本語)

----- テンプレ ここまで -----
2019/09/18(水) 15:14:37.40ID:d3y9L0GY
書き込んだバイト数の合計を数えるしかない。fprintfなら戻り値。文字列ならstrlen。
2019/09/18(水) 15:19:25.37ID:d3y9L0GY
合計バイト数がわからない場合は最初に全部数えるか、バイト数の代わりに行数などを使う手もある。
2019/09/18(水) 23:17:12.89ID:UKnFRk4i
頑張ってプログレスバーを実装したはいいがいざ実行すると
一瞬で表示が終り実装した意味あったのか・・と嘆く >>112 の未来の姿がみえる・・
2019/09/19(木) 00:44:38.80ID:zP6ZrAr3
書き込んだ量を取得することより、書き込み総量を計算するほうが難しい
ですよね。特にプログレスバーが必要になるほどトータル時間の掛かる処理の場合
に正確な総量を計算するとなれば莫大な時間が掛かってしまう可能性が高くて。
だから推定量を何らかの方法で求めるしかない事が多いでしょう。
2019/09/19(木) 01:08:08.89ID:pXxp02XD
いや足していくだけだけど
2019/09/19(木) 01:11:02.88ID:b8NtymRi
つーかテキストだろ?ギガ単位のサイズじゃないんなら
一回メモリにバコバコ貯めといて一気にブワァーッと書くほうが早いよいろいろと
2019/09/19(木) 01:23:42.33ID:wlX+Ifsh
だな
今のコンピュータなら数十MBくらいガバっと読み込んでいいのに、いまだに少しずつみたいな解説してる本やウェブサイト大杉
2019/09/19(木) 06:29:12.29ID:TNTldw8V
プログレスバーとかユーザーの気を静めるためのインテリアみたいなもんなので
過度に精度に凝っても仕方が無い
例えばウィンドーズのファイルシステムで1フォルダに10万個ぐらいファイルがあって
それをリモートのウィンドーズのファイルシステムにコピーするとかな場合は
ファイルのトータル容量とか気にせずに
 進捗率(%) = 100 * コピーしたファイル数/10万個ぐらい
でも役に立つ
2019/09/19(木) 06:32:56.13ID:1k0/HGmS
いやプログレスバーは「きちんと」「しっかり」作らないと
ユーザーのイライラゲージを却って煽ることになるぞ
2019/09/19(木) 06:34:12.46ID:TNTldw8V
長らくぴくりとも動かなかったプログレスバーが一気に進んだとき
ユーザーに爽快感を与えることができうる
2019/09/19(木) 07:48:55.38ID:FVuvug5W
>>122
自分でそれを見たらイライラするタイプだろう
2019/09/19(木) 08:27:53.76ID:UG8ew1B1
99%で止まるやつはイライラするな。
進捗率よりも、書き込んだバイト数とか表示してくれると動いてるのがわかるから好きだな。
2019/09/19(木) 08:40:01.59ID:X+5OT7FX
>>121
windows update
2019/09/19(木) 23:28:31.87ID:TdUlR93V
progress_displayたん…どうして死んじゃったの…
2019/09/20(金) 08:56:12.04ID:Qo6+tgpY
全支店のファイルを集計するツール作った時
九州支店とか遠方の支店に入ると突然90%とかから進まなくなって
イライラおじさんに「なら最初から期待させるな」みたいなお説教された思い出

そこの回線だけやたら細かったというオチなんですけどね
今ならどうやって作るかなあ?
前処理で軽くテスト集計して予想回線速度をチェックしたうえで
拠点ごとに速度の重みづけをして見積もるか?

きちんとやるなら面倒だけどやるしかないよな
それとも運用方法の変更なりで逃げるか
プログレスバーの工数見積り怖い・・・
2019/09/20(金) 09:04:34.21ID:Qo6+tgpY
処理中のファイル名をリアルタイム表示して
進捗率の方はあくまで参考値という体にする手もあるか
あとは費用対効果を説明してこれで我慢してもらう交渉でって感じで
キャンセルボタンも付けるべきだよな上司はイランて言ってたけど
2019/09/20(金) 09:12:44.78ID:hmm5+Tdj
プログレスバーの下に店名と店長の名前表示すりゃいいじゃん
2019/09/20(金) 09:29:35.36ID:JFYTR1x6
その支店に接続するのにかかった時間を計測しておいて
それをベースに表示してみたら
2019/09/20(金) 10:44:26.44ID:BhKigXRx
接続先と毎秒の処理したバイト数でも表示すればいいんでね。
2019/09/20(金) 11:11:25.39ID:Qo6+tgpY
>>129
店長の名前は関係ないだろ
うっかり考え込んでしまったわ
2019/09/20(金) 11:36:45.41ID:hmm5+Tdj
クレーム先だよ
なんなら電話番号も出せばいい
2019/09/20(金) 12:02:27.62ID:l/kiVjID
ロード中にテトリスで遊べるようにしておけばいいよ
2019/09/20(金) 14:12:27.16ID:RTklMOF0
>>134
それたしかナムコが特許もってたような
2019/09/20(金) 14:57:59.95ID:KQX84Fxf
とっくに消滅してる
2019/09/20(金) 18:37:33.58ID:xrPkbjYn
あるクラスのインスタンスを生成するときに、必ずあるメンバを初期化してほしいとします。
このとき、コンストラクタで初期化することにしたのですが、初期化は必ずやってほしいためデフォルトコンストラクタは禁止したいです。

デフォルトコンストラクタを禁止するのはどうやりますか。
2019/09/20(金) 18:43:14.50ID:MFrl2Bhu
deleteすりゃいいじゃん。これ以上は言わぬ
2019/09/20(金) 19:02:34.17ID:sJdfK6qv
>>137
モダンなやり方は = delete;だろう。

古臭いやり方はprivateにして定義を書かないようにすれば、アクセスできないようになる。
2019/09/20(金) 19:30:48.34ID:HuG+DEnO
5年ぐらい前に失効してたのか・・時の流れるのは早いのう
https://automaton-media.com/articles/newsjp/loading-screen-mini-games-patent-will-be-expired-at-united-states/
2019/09/20(金) 19:32:15.62ID:mfXfj+Qu
どうでもいいがC++界隈はハチミツギョーザとか蟻人間とか
なかなかユニークなコテが多い印象
2019/09/20(金) 19:58:49.42ID:xrPkbjYn
>>138-139
ありがとうございます。
やりたいことそのものです。
2019/09/20(金) 21:54:40.66ID:Q9EEZSVd
キャンセルボタンなしの進捗ダイアログ表示して安心してたらESCキーで閉じられて不正動作
2019/09/21(土) 12:33:44.52ID:HPdvwX1r
>>141
「蟻人間」のコテは最近それに改名されたものですよ…
145デフォルトの名無しさん
垢版 |
2019/09/21(土) 17:28:53.63ID:hvfc00gO
Visual Studio 2019 C++ community editionを使用して
PythonをC++で使いたいのですが、

Pythonライブラリーの Python.h ファイルに
#pragma comment(lib,"Python37.lib")
といった記述があり、それがリンクエラーの原因となっております。

プロジェクトプロパティ>VC++ディレクトリ>ライブラリディレクトリには
「$(Path)libs」と記述して、パスは通したのですが改善されません。

これのリンクを通したいのですが、どのようにして対処すればよいのでしょうか?
お願いします。
2019/09/21(土) 17:46:36.63ID:B7P1QhOW
$(Path)という定義済みマクロが無いか、あるいは環境変数PATHの内容が
そのまま(つまり複数のパスを「;」を挟んで連接した文字列に)展開されているのかもしれんから、
展開結果を確認するか、それができないのであれば
絶対間違いのない絶対パス指定でうまくリンクできることを確かめてから改めて来なちゃい
147デフォルトの名無しさん
垢版 |
2019/09/21(土) 18:20:26.50ID:hvfc00gO
>>146 さん。ありがとうございます。

絶対パス指定ならリンクは通りました。
ただ、相対パス自体はあるのですが展開結果が連結しているようです。

重ねての質問になるのですが、
#pragma 等で相対パスを使用する際に、
相対パスが連結している場合はどう対処すればいいのでしょうか?
2019/09/21(土) 18:54:54.04ID:B7P1QhOW
ライブラリをソリューション相対指定可能なフォルダに置いて
Visual Studioの定義済みマクロ($(SolutionDir)なり$(ProjectDir)なり)を正しく使えば良いだけの話なのでは…

あるいは、ライブラリのインストール先が決まっておりライブラリの位置を勝手に動かせないということであれば、
絶対パス指定で何の問題も無いはず…

ソースコードなりプロジェクトファイルなりに絶対パス指定が書かれることによるプロジェクトの可搬性が問題になるなら
適当な環境変数を設けてそれにただ1個のパスだけ定義して$(環境変数名)で展開させるか、
絶対パス部分をVisual Studioの機能でユーザーマクロ定義して最小化することができうる
※ [表示]→[その他のウィンドウ]→[プロパティーマネージャ]、とすればプロパティーマネージャータブが現れるので
  そこで継承元の設定を変更でき、その中でマクロのユーザー定義が可能

いじょ 耕運を祈る、
2019/09/22(日) 06:52:19.04ID:wJwJ26l5
std::variantってテンプレートによる静的ポリモーフィズムを実現しつつ一つのコンテナで管理したいという要求から生まれたんでしょうか
であるとしたら今後継承による動的ポリモーフィズムは下火になっていくのでしょうか
2019/09/22(日) 10:30:22.84ID:dVD4vVZj
variantは共用体の代わり
2019/09/22(日) 22:04:08.49ID:P121omqV
> std::variantってテンプレートによる静的ポリモーフィズムを実現
継承もstd::variantも実際に格納されている型が実行時まで分からないのだから、
静的(コンパイル時)ポリモーフィズムにはならないのでは?
2019/09/23(月) 00:26:21.21ID:7kwjfJuy
gcc, clang, VC++, その他
仕事で使われるのはどれ?
2019/09/23(月) 00:50:57.87ID:QJYuDw18
>>152
gcc, clang, VC++
2019/09/23(月) 01:06:32.53ID:4WIp5ctr
intelも使われるし、C++ Builderも使われてる
2019/09/23(月) 01:21:58.30ID:7kwjfJuy
仕事でC++14より上使っている?
2019/09/23(月) 03:12:30.92ID:aMvJGSmY
iccって高いだけで性能もgccとほぼ変わらないなら値段に見合う利点あるのか?
2019/09/23(月) 09:16:12.73ID:QJYuDw18
メニーコアなCPUとSIMDを使ったときのプロファイラが優秀
おそらく
2019/09/23(月) 11:42:56.67ID:rVs/BJT1
普通に17使うだろ
filesystemやvariant,optional使わんの?
2019/09/23(月) 11:57:29.62ID:f1jovMGd
だよな
2019/09/23(月) 12:02:46.51ID:P5eYiou7
お仕事だとそうぽんぽんバージョンあげられないし
使っていい標準ライブラリのしばりもあったりするんですよ
特にプラットフォーム抽象する系はあんまり使わない
そんなのにべったり頼るぐらいならc++でなくてよくね?ってなる
2019/09/23(月) 12:08:09.26ID:rVs/BJT1
最近はmsvcがバイナリ互換保ち続けているから安心してあげられる。
gccやclangはもともと対応早いから安心だったし。
2019/09/23(月) 12:19:16.90ID:f1jovMGd
>>160
filesystem使って見た?
まだ荒削りで所々変なところがあるけど
方向性としてはいい線ついてると思うぜ
2019/09/23(月) 12:24:31.61ID:EI75oq0E
あ、こいつバギーなライブラリ入れて現場荒らすタイプだわw
2019/09/23(月) 12:31:48.66ID:rVs/BJT1
勝手にライブラリ追加できる時点で糞みたいな職場じゃね
2019/09/23(月) 12:47:46.83ID:f1jovMGd
難癖つけるのは構わんが
脇が甘いぞおまえら
2019/09/23(月) 13:15:30.01ID:WS0TgAIm
まあケースバイケースだろ
ポンポンバージョン上げられないって言うだけで古い環境使い続ける職場もどうかと思うし
2019/09/23(月) 13:21:49.79ID:P5eYiou7
>>162
ファイルシステムまわりはこてこてにネイティブ依存の内製のものがあるので出番はないでしょうね
パフォーマンス第一の仕事なもので
あと標準ライブラリはデバッガやプロファイラのことがスコープ外なのでそのあたり自分達で整備しないと採用できないってのもある
2019/09/23(月) 13:33:54.17ID:f1jovMGd
なるほどね
パフォーマンス第一か
どっちかつーと標準なんぞ糞くらえつーか
標準の意味が違ったりするわけか
2019/09/23(月) 14:04:13.62ID:JqkYM16h
同じじゃん標準ライブラリは一般性重視故に特定の問題領域において必ずしも最高の性能は発揮しない(最高の性能となる保証がない)ことは確定的に明らかよって80-20の法則の80部分からパフォチューしていく
2019/09/23(月) 14:07:39.82ID:QJYuDw18
頭悪い書き込みしか無くて草
2019/09/23(月) 14:31:50.86ID:JqkYM16h
天 才 現 る
2019/09/23(月) 22:59:04.40ID:EI75oq0E
てかc++でやることじゃねーだろどう考えても。
糞の役にも立たんわ。
2019/09/24(火) 00:22:06.58ID:iXMkuGmM
C++でやる事って何よ?
2019/09/24(火) 01:05:00.80ID:blreVUO1
templateで遊ぶくらいしかやることないね。
2019/09/24(火) 06:38:35.03ID:3E9gAKbz
仕事がないって話はマ板でやんな
2019/09/24(火) 18:32:13.78ID:9F3bEWFD
汎用性・可搬性を重視するかパフォーマンスを重視するかのスタンスの違いだけでしょ
2019/09/24(火) 19:39:45.71ID:bRBDEgqh
>>173
filesystemみたいなライブラリの実装。
178デフォルトの名無しさん
垢版 |
2019/09/24(火) 20:52:11.47ID:ZtSwhx8Z
visual studio 2019 16.3でついにconceptが使えるように(赤線でるけど。。。
2019/09/25(水) 00:19:35.27ID:T/Q1Hzp4
conceptはいい
人類は真の抽象化を手にする
2019/09/25(水) 00:39:03.31ID:0gY/IvgH
C++98の俺には1ミリも関係ない話だな。
2019/09/25(水) 00:43:58.99ID:ROl8Z6BD
じゃあ出て行け
2019/09/25(水) 01:15:27.21ID:zpsuJSx5
98とかVB6と同レベルの化石
2019/09/25(水) 16:32:45.50ID:5aP+8CuP
>>181
お前が出て行け
2019/09/25(水) 21:10:30.42ID:065+eRsw
じゃあ俺が
2019/09/25(水) 21:20:37.77ID:SmUxqnJ3
いやおれが
2019/09/28(土) 01:40:31.76ID:cIYNjYIc
重複スレの方が謎の盛り上がり
2019/09/28(土) 02:11:00.78ID:intFUv+k
void君はあのスレから出られないからな
188デフォルトの名無しさん
垢版 |
2019/09/28(土) 14:48:43.27ID:nKwEArCO
このスレはwinapiを扱ってますか?
sendmessageとか。
2019/09/28(土) 16:09:42.06ID:EwMBvois
>>188
Win32API質問箱 Build125 :
http://mevius.5ch.net/test/read.cgi/tech/1551247748/l50
2019/09/28(土) 16:12:26.72ID:QJtrgyVU
>>188
win32api ならやってる人は少なからず居ると思います
191デフォルトの名無しさん
垢版 |
2019/09/28(土) 16:37:07.73ID:nKwEArCO
>>190
サンクス!
2019/09/29(日) 07:24:31.34ID:wVCOjSn/
文法とか開発思想の初歩的な質問なんだが、例えば最大流問題を解くプログラムと最小費用流問題を解くプログラムで「Edge」という構造体や「dfs」という関数の意味を変えたいときに使うのが名前空間だという理解でOK?
(関数の意味を変えたいだけなら名前空間じゃなくて別のクラスを用意すれば良いだけかな?)


あと、名前空間の中でグローバル変数を使うのは通常のグローバル変数と同じで慎重にやった方が良い(と言われてる)?
例えば最小費用流問題を解くときに経路の情報を記録したりするんだが、この経路を mincostflowという名前空間におけるグローバル変数にするとか
2019/09/29(日) 09:01:23.18ID:thkZayt3
名前空間は名前をまとめるだけであって隠蔽したり上書きしたりする機能はない
素直にクラス使え
2019/09/29(日) 10:02:14.52ID:sih8o/+S
>>192
そのくらいのプログラムでは名前空間は使わない方がいい。
使うべきなのはクラス。
2019/09/29(日) 10:24:44.95ID:MP9GBJ11
いや同じ識別子を違う意味で使いたいのなら名前空間だ
名前をどうかしたいというだけでクラス化するといらん制限がかかって邪魔なだけ
2019/09/29(日) 10:27:55.39ID:lvoGL429
>>192
その例では明らかにグローバル変数を使う必要はない。
「最小費用流を解くクラス」のメンバに押し込めるのが普通だと思われる。
2019/09/29(日) 12:21:02.27ID:xopwPRlT
名前空間は一連の処理や機能をライブラリとしてまとめるときに他のライブラリと名前衝突しないようにするためのものだ
minとmaxの違いだけなら名前空間分けずに変数名や関数名に直接反映させればいいのでは
2019/09/29(日) 15:27:39.30ID:sih8o/+S
>>197
個人的には自分もそう理解しています。
自分が作るプログラムでは namespace は基本的に使う必要はほぼ
有りません。古い時代に既に作ってしまったプログラムで名前が衝突して
困るような場合に使うと便利な機能として登場したのではないかと思っています。
2019/09/29(日) 15:31:08.94ID:MP9GBJ11
せっかくの回避策をマクロでばっちり透過してくれた素敵なマイクロソフトw
2019/09/29(日) 16:03:17.31ID:k4CvVXqN
>>198
昔作ったものに対してだけでなく、いま作ったものが将来使うときに名前の衝突を回避するという目的もあるぞ。
2019/09/29(日) 16:52:41.21ID:1aVYpaid
なぜ日本人c++プログラマの99%はstd::vectorもstd::find_ifも見たことすらないのだろう。
c言語風の生ポインタ、生配列、if文、for文のみを使ったプログラムしか読めない。
外国の人でそういう人は見たことがない。
2019/09/29(日) 17:03:09.76ID:bY9zxDl0
99%は盛り過ぎでは・・・
2019/09/29(日) 17:06:09.85ID:cKDPFQQS
>>201
ワイド文字知らん人見たことあるわ
2019/09/29(日) 17:28:35.45ID:TRtZnyIq
体感で8割ぐらいかな
まず規格があって改訂されてるってことも知らないのもいる

これは他の言語にも言えることだが
職場で使ったことのあるJavaやPHPのバージョンと環境がすべてみたいな
2019/09/29(日) 17:37:04.15ID:MP9GBJ11
>>201
おまえ豚小屋にでも住んでるのか?w
2019/09/29(日) 17:38:36.19ID:MCSEZmay
C++20に入るauto変数を使った簡易関数テンプレートは宣言と実装を分割してコンパイルできますか?
2019/09/29(日) 18:02:01.75ID:xopwPRlT
全部ヘッダーファイルに書いてしまえ
2019/09/29(日) 18:13:05.80ID:Lkb9fNY1
vector知らんのはいたとしても組み込みマンくらいだろ
2019/09/29(日) 19:02:41.77ID:bY9zxDl0
>>206
多分戻り値型と同じで、1つの翻訳単位内ならできると思う
宣言だけヘッダに書いたりするとautoのままだと呼び出せない
2019/09/29(日) 19:46:49.92ID:qdFsd7WD
>>208
組み込みマンはC言語だろ
C++使っててstd::vector知らないのは流石に勉強不足
2019/09/29(日) 19:56:43.66ID:MCSEZmay
>>209
ありがとう
やっぱだめか
2019/09/29(日) 21:36:43.15ID:MP9GBJ11
>>210
組み込みマンだからprinf知りませんみたいなもんだなw
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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