【初心者歓迎】C/C++室 Ver.105【環境依存OK】

■ このスレッドは過去ログ倉庫に格納されています
2019/04/25(木) 06:54:38.08ID:6xUIrXDu
エスケープシーケンスやWin32APIなどの環境依存なものもOK
そのような質問は必ず環境を書きましょう
半角空白やタブでのインデントはスレに貼ると無くなります

コードを貼れる所
http://codepad.org/
https://ideone.com/

前スレ
【初心者歓迎】C/C++室 Ver.104【環境依存OK】
https://mevius.5ch.net/test/read.cgi/tech/1545944692/
2020/01/28(火) 10:57:31.95ID:/YDDbz91
// >>573
}
2020/01/28(火) 15:18:36.74ID:PrwWvwu0
// >>574
;
2020/01/29(水) 08:49:45.27ID:RKbTXMV3
なんかわろた
577デフォルトの名無しさん
垢版 |
2020/01/29(水) 13:23:40.81ID:zE4LbE2k
>>575
:q!
2020/01/29(水) 17:06:53.33ID:F1ZVbYEm
は? C-x C-c だが。
2020/01/29(水) 19:14:06.94ID:cVCtJzaf
>>577
保存しないで抜けるんじゃないw
580デフォルトの名無しさん
垢版 |
2020/01/31(金) 16:53:29.94ID:Hjj/uk/N
g++やclangで-std=c++17オプションをterminal、VScode共に一括で
デフォルトにしたいのですが何か良い方法ってありませんか?
環境はMac OS Mojaveです
2020/01/31(金) 22:24:21.02ID:I/eJOw0W
>>569
それがどうした?
4x4?それが自慢か雑魚野郎
こっちは自由にサイズ変更可能な行列演算ライブラリを20年以上前から仕事で使ってる。
そして一定サイズ以上の行列乗算では式テンプレートではまったくパフォーマンス向上できないこともわかってる。
土下座すんのはテメエなんだよ一知半解の低脳野郎
ちなみに>>500のサイトにあるBlitzの有名なコードだが、operator=内部で =r(i.j)などとして、行列乗算(each productではなく)に拡張した場合、
式テンプレートを使用しない方式と比べて100x100行列なら1000倍以上の速度低下を引き起こす

>アホだろお前、ETがSIMD以上に速度上がると思ってんの?


はぁ? 異なるHW条件持ち出してきて速度向上ほざいてアホの極みか低脳
2020/01/31(金) 22:45:37.50ID:I/eJOw0W
>>569
あぁ
言い忘れてたわ式テンプレートは一時領域コピー時間の削減と言う意味で3項以上と書いてるわけだが、
一時領域の必要ない2項でメリットがあるというなら挙げてミロよ低脳www
寝ぼけんな雑魚野郎
2020/01/31(金) 23:43:58.62ID:HzrC4w9c
団子だろ
2020/01/31(金) 23:56:24.08ID:I/eJOw0W
>>479
#pragma omp critical
使ってるコードで同じエラー出たわ
criticalセクションが無ければこのエラーは出ない
無くしたら動かんけどww
19.1のバグやね
まだ、気づいてない人多いんだろな検索してもヒットしない
2020/02/01(土) 04:58:28.47ID:sDMEFbxi
>>581
ずいぶん反論に時間がかかったなw

>20年以上前から仕事で”使ってる”
作った側ではないなら実装時の問題とかには疎いんじゃねーの?
>Blitzの有名なコード
Blitzのコードとかどっかに書いてたか?
Blitzのソース読んだことないんで具体的にどのヘッダか示してくれるか
というかあんなクソ単純な説明のためのサンプルと同等のコードとは考えにくいが

>100x100行列なら1000倍以上の速度低下を引き起こす
へー。で??
俺別にETを絶賛などしてないんだが
質問者の話もそういう可変要素のやつじゃなかったよね

>異なるHW条件持ち出してきて
お前が
>能力不足をHWに補ってもらわないとなww
とかアホなこと抜かしたからだろ
2020/02/01(土) 05:17:20.41ID:sDMEFbxi
>>582
>一時領域の必要ない2項でメリットがあるというなら挙げてミロよ低脳www
2項で一時領域が必要ないのはRVO前提にしてんだろうけど
お前コンストラクタしか頭に無いだろ

あと、よっぽど自信がおありのようだから質問してやるが
上に挙がってたコード例のようなやり方でバカ正直に行列の乗算のような計算を
仮に3項以上でやると重大な問題が起きるわけだが、それが何か即答できるよな?
2020/02/01(土) 07:35:36.44ID:tav2AwxI
最適化、高速化は具体的な用途とセットじゃないと語っても意味がない

要素ごとに演算すれば良い巨大ベクタと
1個の結果を得るのに広範囲にアクセスしなきゃならない巨大行列の乗算
全然違う話
2020/02/01(土) 07:57:11.83ID:sDMEFbxi
大きな行列の場合、高速化手法なんて他にいくつもあるからね(詳しくはないが

それ以前になぜ遅くなるのかも分かってない&ET以前にSIMDと言われて
「能力不足をHWに補ってもらわないとなww」とか(ライブラリ実装したことある立場ではないにもかかわらず)
平気で言える時点で、20年仕事でってのは嘘だろう
C++かじっただけのどこかの暇な学生だろ
2020/02/01(土) 08:20:06.35ID:tav2AwxI
HWを使わない最適化(高速化)なんてあり得ないからね

SIMD、スレッド、キャッシュ、(GPU、FPGA、...)
これらを有効に使うのが最適化
2020/02/01(土) 08:23:05.35ID:tav2AwxI
高速化はどうでも良くて単に楽に書きたいだけならC/C++は向いてない
2020/02/01(土) 12:22:48.15ID:TULylXcw
>>589
アルゴリズムはハード非依存と言っていいでしょ
2020/02/01(土) 13:49:03.18ID:eXUHWthh
「ソフトウェアに対して本当に真剣な人は、独自のハードウェアを作るべきだ。」
アラン・ケイ
2020/02/02(日) 23:42:11.49ID:vTjBAXNr
>>591
ある段階まではね。
2020/02/03(月) 08:23:47.39ID:Ns1a0i+O
>>593
具体的にどの段階?
ハードウェアに依存したアルゴリズムの最適化って何?
例えばロックフリーでCASが前提とかはあるけどあれも具体的なハードではないだろ
2020/02/03(月) 08:56:52.32ID:MWPuXKWI
除算回数を減らすチューニングなんかはHW依存と言えるんじゃない?
596デフォルトの名無しさん
垢版 |
2020/02/03(月) 12:02:25.38ID:62FLJlST
触ったこと無い人には説明しても判らんやろて
2020/02/03(月) 12:33:05.83ID:n2ny0GIb
極端なこというと、量子コンピュータ向けアルゴリズムはHWが量子コンピュータであることが前提
HWとSW合わせて1つの装置だから
2020/02/03(月) 15:01:01.85ID:Exvuz9nd
>>595
それはアルゴリズムとは言わないでしよ
計算のオーダー変わるわけじゃないし
2020/02/03(月) 15:46:17.64ID:MWPuXKWI
>>598
いや、計算量も変わるしアルゴリズムでもあるけど?
2020/02/03(月) 17:07:19.92ID:Exvuz9nd
>>599
計算量でなく計算オーダー
知らずにしゃしゃり出てくるとか
2020/02/03(月) 17:13:32.87ID:Si1aHG26
ビッグオーが変わるようなのはアルゴリズムの違いだろうけど
ビッグオーがそのままで計算量だけが変わるのはどっちとも言いがたい
2020/02/03(月) 17:33:31.72ID:MWPuXKWI
>>600
より除算回数の少ないアルゴリズムを選択することは現状のCPUは除算が遅いことに対応するわけだからHW依存と言えなくもない
この主張に対してそういった選択はアルゴリズムでもなければオーダーもかわらないと反論しているのですか?
2020/02/03(月) 23:27:39.99ID:Ns1a0i+O
特異な例を持ち出しても一般論を否定できないっての
2020/02/03(月) 23:33:51.85ID:e9E2NTEb
計算量のオーダーが変わらないアルゴリズム的最適化なんていくらでもあるよ
2020/02/04(火) 00:20:58.43ID:mQynHgib
有限の並列度の並列化ってオーダー変わらないけどワザワザ並列化可能なアルゴリズム使うよね
2020/02/04(火) 00:29:54.04ID:A8BeWHVj
どうせO(n)だから配列丸コピしても問題なしっていう馬鹿を思い出したわ。
2020/02/04(火) 00:37:14.93ID:mQynHgib
と言うか最適なオーダーのアルゴリズムなんて殆んど既知だから、オーダー変わるような最適化ってあんまりないよね
608デフォルトの名無しさん
垢版 |
2020/02/04(火) 12:35:39.06ID:SyKO2BA6
車輪の再発明は良く批判されるけど
素数を列挙するプログラムなんて
既に判ってる素数はテーブル参照するのが最適なのに
なんで毎回計算して地球環境破壊に貢献してる訳?
2020/02/04(火) 12:47:30.21ID:GNpMFwh2
ROM容量にはテーブル化は最適ではない
2020/02/04(火) 12:48:27.46ID:t2uF8z+f
競技ルール的なアレじゃね
2020/02/04(火) 13:48:07.39ID:4xoSX3tu
「ROM容量にはテーブル化は最適ではない」
典型的な論点ずらし
2020/02/04(火) 16:52:46.33ID:t6zt27Qb
>>608
素数の話はどっから出てきた?
アルゴリズムの例として挙げたのかも知れんが、
別のスレッドで最近見た気のする話題なので投稿する場を間違えたのかと。

実用プログラムでは「車輪の再発明」は上手いやり方じゃないけど、
低レベルの部分から組み上げたほうが理解が深まるって面はあるでしょ。
2020/02/04(火) 16:53:25.40ID:GNpMFwh2
お前が何を論じたいかとか
知るか
2020/02/04(火) 17:26:23.15ID:MKouw6om
車輪の再発明は学習に最適
2020/02/05(水) 00:16:57.41ID:GCTF3gV7
>>611
>>608が最適と豪語したから反例挙げてるだけだろ
お前のほうが論点ずらしだよw
2020/02/05(水) 01:36:02.88ID:RkJ0eyiK
>>615
悔しそうですねw
2020/02/05(水) 04:53:06.88ID:GCTF3gV7
夜中まで大変だなw
2020/02/05(水) 13:53:11.70ID:rzfrqein
バイナリデータを、文字列に変換して保持しようとした場合、素直に16進数表記にするのがよい?
データ量倍になるけど
2020/02/05(水) 14:09:47.25ID:ox5K4d9e
おまえがやりたいようにやればいいとおもう
2020/02/05(水) 14:22:22.31ID:ElBlpF/h
Base64
2020/02/05(水) 14:32:42.49ID:rzfrqein
>>620
あーそんなのありましたな
ちょっとググったらライブラリも出てきたしよさそう
ありがとうございます
2020/02/05(水) 15:41:12.41ID:zWcxLf4u
それでいいんだw
2020/02/05(水) 16:07:18.33ID:ImPcpEtv
それでいいなら%Xで出力するのでも良い気がするね
base64にすると単純な16進表記よりデータ量増えるし、%Xなら余分なライブラリもいらないし
まぁどっちでもいいんだろうけど
2020/02/05(水) 16:08:34.43ID:ImPcpEtv
嘘言ったわ、base64は6ビットごとに1文字だからデータはこっちのほうが小さいか
625デフォルトの名無しさん
垢版 |
2020/02/05(水) 16:54:58.67ID:2rKdW1Ec
8bit→HEX2桁→2倍
8bit→Base64→4/3倍
やろ
一定数以上桁が必要なのでpaddingとかあるし100%ではないが
2020/02/05(水) 18:52:50.41ID:hYuejzNd
base64なんかビットシフトとテーブルだけで簡単に実装できるし依存ライブラリ増やす必要もないのでは
2020/02/05(水) 19:13:05.48ID:PZ/5vknB
16進数派
628デフォルトの名無しさん
垢版 |
2020/02/05(水) 19:23:50.17ID:2rKdW1Ec
データ量にもよるけど
"\x00\x00\x00\x00..." が一番楽じゃね
2020/02/05(水) 19:35:11.50ID:hYuejzNd
何のためにテキストに変換したいのかがわからんとなんとも言えんな
目的によって使える文字種も違うからな
2020/02/05(水) 19:41:08.83ID:PZ/5vknB
Base64で良いって言ってるんだから
終了
2020/02/05(水) 23:15:38.55ID:NEouxGwD
Base64 は、HTML でもよく使う

Base64の文字列で、PNG/JPEG画像を、HTMLファイルに直接埋め込める

<img src="data:image/png;base64,xxxxx..." />
2020/02/06(木) 00:01:41.26ID:7WdfZf7H
base64って7bit通信路通すためのもんでしょ?
textにするならヒューマンリーダブルにするのが無難だと思うけど
そうじゃなけりゃバイナリでいいじゃん
と思った
まぁ好きにしなよ
2020/02/06(木) 00:07:14.11ID:/W9iMVJD
ヒューマンリーダブル
2020/02/06(木) 01:02:03.98ID:jSrTrJa0
ish みたいなやつで UTF-8 を利用したのをどっかで見たことある
2020/02/06(木) 06:43:09.85ID:bk3hpXlE
>>632は一体何を主張してるんだろう…
2020/02/06(木) 06:44:20.62ID:bk3hpXlE
>>634
ishなつい
パソコン通信の時代に使ってたけどもう30年近く前なんだな
2020/02/06(木) 10:19:44.96ID:s0z6ZqT0
テキストファイルを結合してishでデコードしてえっちなMAGファイルを見てた人は手をあげなさい
638デフォルトの名無しさん
垢版 |
2020/02/06(木) 13:08:45.50ID:sNihMBVC
ishはBase64と違って誤り訂正あるやん?
2020/02/06(木) 13:22:34.72ID:euRWcwLl
ソーセージのだけ覚えてる
2020/02/07(金) 02:44:46.72ID:FDFOp562
boost::serializationがお手軽にシリアライズできて便利だなと使いまくってたら、
map系コンテナがあると一気に性能落ちるっぽいんですが、これって当たり前ですかね?
protocol buffersなどの他のシリアライザに替えて解決するものでもなさそうだし、どうしたもんかな…
641デフォルトの名無しさん
垢版 |
2020/02/07(金) 11:04:33.34ID:j3f+aFgv
>>637
here!
642デフォルトの名無しさん
垢版 |
2020/02/07(金) 11:15:10.05ID:0A6dyGR7
独学で組み込みやりたいんだが…
643デフォルトの名無しさん
垢版 |
2020/02/07(金) 11:40:38.84ID:PWhN+bN7
圧縮してからBase64すればbitチェックも出来てサイズも減って一石二鳥
2020/02/07(金) 12:16:58.36ID:qwopp/ku
>>642
やればいいんじゃないかな
2020/02/07(金) 12:29:23.66ID:/AlUflk/
>>642
やればいいんじゃね?
やれない理由があるならそれ書かないとわからんし
2020/02/07(金) 12:30:00.98ID:VWyX2qgb
今の組み込みは環境整いすぎてハード触ってる感ないよね
2020/02/07(金) 12:35:41.88ID:8FC0VQS8
小規模CPUなら全て自力のコードで書けるよ
648デフォルトの名無しさん
垢版 |
2020/02/07(金) 12:47:59.75ID:0A6dyGR7
Arduinoでいい?
2020/02/07(金) 13:15:59.26ID:j+3lGBli
いいんじゃない?なんでわざわざ聞くのかわからんが
2020/02/07(金) 13:20:18.59ID:8FC0VQS8
自力が好きならまずは
PICフルアセンブラ
651デフォルトの名無しさん
垢版 |
2020/02/07(金) 13:31:27.53ID:0A6dyGR7
制御的な知識は多少あるから今更Lチカやってもなぁって感じだ
2020/02/07(金) 13:47:41.14ID:8FC0VQS8
PIC=Lチカ
かよ
653デフォルトの名無しさん
垢版 |
2020/02/07(金) 13:51:42.69ID:PWhN+bN7
条件後出しするなとあれほど
板チ
654デフォルトの名無しさん
垢版 |
2020/02/07(金) 14:39:32.66ID:aI41PDC9
>>642
SPRESENSE、Arduinoよりスペックが高いからあまり制約を考えずに触れるからいいよ
2020/02/07(金) 18:25:14.52ID:tbpxydmI
組み込みって難しそうなのに年収は総じて低めだよね
オラオラ系Webプログラマとかのほうがマシだったりするし
なんか世知辛い
656デフォルトの名無しさん
垢版 |
2020/02/07(金) 20:39:09.61ID:Dpv8aBJv
組み込みで出来る人は多分大企業メーカーのR&Dに転職してっちゃうんじゃないかな。
なんとなくのイメージだけど、組み込みプログラミングが必要な製品の品質管理を考えると、
請負組み込みの会社に開発を頼める範囲ってごく簡単な部分に限られそうだから、
単価が低い仕事が多くなっちゃうのかも。
2020/02/07(金) 22:46:17.85ID:k+IYFIKh
まあコスト削減のために低スペックハード使うわけだしな。
2020/02/08(土) 00:46:23.22ID:Q7LgS8OA
オラオラ系というよりウェーイ系というほうが表現が適切だろう
ホームページ見ただけでウェーイって叫びながら意識高い開発してる姿が容易に想像できる
2020/02/08(土) 03:53:19.54ID:/OouxCiy
いわゆるロクロ回してる系やな
660デフォルトの名無しさん
垢版 |
2020/02/08(土) 13:16:27.70ID:v1IBJgnW
京セラも陶器だったんやな
661デフォルトの名無しさん
垢版 |
2020/02/11(火) 18:11:48.90ID:poOKFhcK
そもそもここで質問するのが適切か分からないのですが
とりあえずC++っぽいので分かる方がいたら教えてください。

とあるライブラリのビルドスクリプトを叩いたところ以下のようなエラーが出ました。

```
略/filesystem.hpp:784:13: error: no member named 'make_absolute' in 'std::__1::__fs::filesystem::path'


```

ファイル名からC++のコンパイルに失敗しているようなのでした。
普段は別の言語を触っておりC++は触ったことがありません。
調べた限り、ヘッダの二重読み込みでエラーになっているとのことでしたが
該当の `filesystem.hpp` には #pragma once が宣言されています。

環境はMacOS 10.15.3で、とりあえず途中でgccを入れ直したりしましたがやはり同じところでコケます。
Mac上で #pragma once が機能するように環境を設定するにはどうしたら良いでしょうか。

よろしくお願い致します。
662661
垢版 |
2020/02/11(火) 18:13:22.88ID:poOKFhcK
貼り付けるエラー文言間違い得ました。

```
略/filesystem.hpp:52:9: error: redefinition of 'path'


```

です。
2020/02/11(火) 18:30:48.12ID:GpQNLMm4
>>661-662
とあるライブラリとか言わずにそのライブラリを示して。
初心者はどんな情報が必要か判断する能力がないので、情報を選別してはいかん。
情報を小出しにされるとイライラゲージが上昇しやすいから、
状況を再現可能な情報を提示することを心掛けて。
664デフォルトの名無しさん
垢版 |
2020/02/11(火) 18:38:14.46ID:poOKFhcK
>> 663

すみません、おっしゃる通りですね。
このライブラリのインストールになります。

github.com/WonderMediaProductions/Maya2glTF
2020/02/26(水) 08:41:15.23ID:PiyizPRV
アンカもマトモに撃てないってアホじぇねえのコイツ
666デフォルトの名無しさん
垢版 |
2020/02/26(水) 11:09:35.39ID:wiEfavJ1
見ないで答えるけど
include path の順番がまずいんじゃね
2020/02/27(木) 10:57:15.88ID:RXnANkEf
-----sample.h (classAは変更不可)
class A
{ private: virtual void funcX(void) = 0;
 public: void funcY(void);
 public: void funcZ(void);
};
class B : private A {・・・};
-----

このような関係性で
classBでfuncXとfuncY(内部でfuncXを使用)が不要、funcZが必要な場合
funcXをclassBに追加せずに済む方法があればいいのですが
funcXもclassBに追加するしかないですか?
2020/02/27(木) 11:17:47.73ID:R9m18Hk4
追加ってのがvtblに追加って意味ならそうだよ
2020/02/27(木) 11:55:46.48ID:RX8iJBd3
継承しなければいい
2020/02/27(木) 13:04:34.75ID:RXnANkEf
>>668
ありがとうございます

>>669
純粋仮想関数が含まれているので継承しないと使用できません
671デフォルトの名無しさん
垢版 |
2020/02/27(木) 15:19:56.24ID:G6pyHvdg
Icon とか継承したクラス造ろうとしたら protected 観たいなエラー出るのですが
無理やり継承する方法はありますか?
2020/02/27(木) 21:56:32.66ID:nCyLO+2A
Ruby では、Forwardable モジュールで、
継承ではなく、包含を使って、インスタンス変数に委譲できる

使えるメソッドも、限定できる。
配列のメソッド中、指定した2つのメソッドだけが使える

@ary = [ ]
def_delegators( :@ary, :push, :pop )
673デフォルトの名無しさん
垢版 |
2020/02/27(木) 22:15:25.36ID:IR/jNZBp
組み込みプログラマになりたいんだけどオススメの本とかあったら教えてください
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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