C++相談室 part143

■ このスレッドは過去ログ倉庫に格納されています
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/06/19(水) 02:46:53.30ID:G/RPQnNp0
言語仕様系なら「C++11/14 コア言語」??
2019/06/19(水) 02:49:21.59ID:G/RPQnNp0
オートとレジスタが死んだこと?
2019/06/19(水) 03:19:29.65ID:0DgdOBcz0
>>43
GCCのバージョンアップでカスタマイズしやすくなった、とかじゃないの?
2019/06/19(水) 07:16:37.76ID:h4x/aIUc0
>>43
原文は "The pace of compiler development has increased with the recent updates to C++, ..." で、
C++03時代はバグ修正や最適化の向上がメインだったコンパイラ開発が、C++11以降は
大きな機能追加も伴う規格の改定に追いつくためにペースアップした、という感じかと。
改めて訳すとしたら「最近のC++のアップデートに伴ってコンパイラ開発のペースは増しており、〜」ぐらいかな。
2019/06/19(水) 12:07:30.39ID:52Ph4xCha
>>39
ポケットリファレンス
ただ次の現場がレガシーC++ならあまり参考にならないだろうけど
2019/06/19(水) 13:56:12.54ID:20CU6qie0
原文なんて読む必要あるの?
2019/06/19(水) 14:50:44.89ID:mPuTh16gM
実務で原文読んでたら、一生原文読むだけで終わりそう
2019/06/19(水) 15:09:23.72ID:hDOeQD4v0
大部分の軍人は銃や刀剣の作り方について深く知る必要はない。
2019/06/19(水) 16:36:38.81ID:yMqJGQdwM
バカな日本語訳や要約を読んで首ひねる暇があれば原文読んだほうが早い
2019/06/19(水) 17:36:22.46ID:0yjsH3hg0
日本語と同じく速度で英語を読めるようになりたい
2019/06/19(水) 19:14:55.87ID:hDOeQD4v0
>>53
結局のところ、たくさんの単語を覚えるしかない。数は力だよ。
2019/06/19(水) 20:55:08.64ID:DQACirUv0
昔に比べれば英文なんてそこら中にあるんだから読めばいい。
2019/06/19(水) 21:04:53.64ID:0Op2NPvz0
引き籠りが毎日ひたすら英語版のwikipediaを読んでいたらいつのまにかとんでもない英語力が
57デフォルトの名無しさん (ワッチョイ)
垢版 |
2019/06/19(水) 23:14:25.37ID:hDOeQD4v0
昔は民主主義はどうのこうのとか洗脳じみたreaderしかなかったよな?
2019/06/19(水) 23:58:30.86ID:pr4rVpx+0
C++のスレッドや並行処理でこれ読んどけっていう資料や本などありますか?
pthreadはもう使いたくない
2019/06/20(木) 00:00:20.59ID:nbok5ERN0
今時はstd::thread使えば済むんじゃね
2019/06/20(木) 00:11:04.17ID:lLho4HyI0
えーっと、終わりが明確なものは、std::asyncでスレッド投げればいいと思うよ。
2019/06/20(木) 00:35:57.46ID:984l1qct0
>>58
他の本はしらないが、「Effective Modern C++」には必要なことは書いてある、と思う。
2019/06/20(木) 04:18:30.46ID:fuxDfWBK0
std::asyncって生まれた瞬間にdeprecated送りになってなかったっけ?
2019/06/20(木) 11:45:49.37ID:M/WWMkF90
std::asyncはダメなの?
2019/06/20(木) 12:24:14.76ID:j9Uc7TedM
>>62
なんか別のものと間違えてない?
2019/06/20(木) 14:54:38.04ID:bgVEzQPq0
11でのasyncの自動でjoinする仕様について
『致命的な問題でありasyncは実用にならない欠陥品。
破壊的変更になっても次の規格で修正すべき』
って声が(一部で)あったんよ(※表現は誇張しております)
2019/06/20(木) 15:21:36.40ID:M/WWMkF90
std::async使ってみましたがstd::launch::async指定すると自動でjoinしますね
デストラクタで待ってるんですかね
std::launch::defferredを指定するとすぐ返ります
確かに微妙に使いにくいw
2019/06/20(木) 15:52:17.95ID:lDaMx0VnM
実装依存だから環境によってはスレッド作成すらしてないかも知れない
2019/06/20(木) 16:18:06.15ID:lLho4HyI0
お約束ですね。
2019/06/20(木) 17:57:10.96ID:BT0cBtynM
rust使ったほうが楽
2019/06/20(木) 18:03:13.72ID:lLho4HyI0
コンセプトですよコンセプト。来年に期待しましょう。
unifide call syntaxもその後入ることに期待です。
関数チェインしたいんです!

と、唐突に宣伝を始めるなど。
71デフォルトの名無しさん (ワッチョイ)
垢版 |
2019/06/20(木) 19:15:02.26ID:EITLfG5y0
>>56
不思議なことに、読めるようになると、聞き取れるようにもなるんだよね。
どうしてだろね。
不思議不思議。
2019/06/20(木) 23:00:29.85ID:H2FAKrDC0
読み書き話すはできるが聞き取れねーんだけど・・・
2019/06/21(金) 00:28:19.29ID:5xL7WT2l0
読み書きは下手くそでも時間かかってもなんとか通じるからいいけど音声はGoogle翻訳に頼れないのがつら
2019/06/21(金) 00:32:02.14ID:5mFcIDLA0
Youtubeに音声自動翻訳字幕機能ほしいよねw
75デフォルトの名無しさん (ササクッテロ)
垢版 |
2019/06/21(金) 16:04:18.10ID:Vcgrp8ZVp
再帰を用いずに、
a0=0
an=( an-1×an-1 )+1
の1〜6を出せ
ってやつが全然できないので教えてください。
2019/06/21(金) 16:41:53.38ID:rC321OP20
意味わからん
2019/06/21(金) 16:49:46.98ID:vf8hmAK4M
0からループ使えばいいだけじゃないの
2019/06/21(金) 16:52:32.29ID:uFs7CW+50
>>75
#include <stdio.h>
int f(int n)
{
int i, a = 0;
for (i = 1; i <= n; ++i) a = a * a + 1;
return a;
}
int main(void)
{
int i;
for (i = 1; i <= 6; ++i) printf("a_%d: %d\n", i, f(i));
return 0;
}
2019/06/21(金) 20:41:29.94ID:9XN8XoXIM
>>75
> 再帰を用いずに、
その意図は?
単にスタック使いたくないだけなら最近のコンパイラにまかせりゃ末尾呼出最適化ぐらいはするから気にすんな
2019/06/21(金) 21:07:41.81ID:G412ZpUw0
なんかの課題だろ
2019/06/21(金) 21:12:24.28ID:o/bRPi0pa
平均値も出せないMath.hはクソだと思う理由

1.エクセル関数で簡単にできちゃう
2.電卓でもできることがプログラムになると煩雑になる
3.平均値を出すのにコードを書き換える手間など
2019/06/21(金) 21:19:00.28ID:dWgEej/X0
平均値の計算は実は簡単ではない
2019/06/21(金) 21:21:02.30ID:rC321OP20
そもそもmath.hはC言語のライブラリ
2019/06/21(金) 21:29:06.50ID:5xL7WT2l0
そのエクセルの関数の機能や電卓ツールはmath.hを使って作られている
2019/06/21(金) 21:48:48.65ID:0JVOBbqs0
浮動小数甘く見過ぎ
86デフォルトの名無しさん (ワッチョイ)
垢版 |
2019/06/22(土) 15:16:07.71ID:ecTKxvDL0
C++コードをC++コンパイラでコンパイルするのと
CにトランスパイルしてCコンパイラでコンパイルするのと

どっちが性能良いんだろう?
トランスパイラの優秀さにもよりそうだが
2019/06/22(土) 15:35:26.46ID:XJUTErWD0
CがC++よりハイパフォーマンスという前提がありそうだが、そんなことはない
2019/06/22(土) 16:04:32.30ID:LOXx/aGE0
今時c言語のみのコンパイラなんて見かけないな
2019/06/22(土) 16:12:52.94ID:9zxAgsAB0
>>86
いったんトランスパイルを挟むと、C++の元のコードをCで表現できる範囲内のコードに置き換えなきゃならないから、その時点で元のコードのままならなできた最適化のうちの一部はできなくなるだろうし、わざわざ効率の悪いコードに置き換えなきゃならないこともあるだろう。
トランスパイルの方が効率が上がる理由はないと思うよ。
2019/06/22(土) 16:38:05.67ID:ICCmixle0
現時点で利用可能な C++→C トランスパイラは何ですか?
2019/06/22(土) 16:53:56.35ID:3PgdpjOh0
llvm
92デフォルトの名無しさん (ワッチョイ)
垢版 |
2019/06/22(土) 17:03:11.19ID:ecTKxvDL0
https://benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/cpp.html

C++がCに勝ってる項目があるんだけど信じがたい
93デフォルトの名無しさん (ワッチョイ)
垢版 |
2019/06/22(土) 17:16:00.48ID:ecTKxvDL0
https://gist.github.com/simonhf/de808e0f8240ef27dac655505c8bf30f#file-result-summary-txt

こっちだとJavaにすら負けてる
なんなんだろうねベンチマークって
94デフォルトの名無しさん (ワッチョイ)
垢版 |
2019/06/22(土) 17:19:10.62ID:ecTKxvDL0
http://blog.dhananjaynene.com/2008/07/performance-comparison-c-java-python-ruby-jython-jruby-groovy/
どうやらC++はメモリの確保と解放にコストがかかるから
Javaはまとめて大量にヒープをもってプールして使ってくから
そこでJavaが勝利する場合があるらしい。
C++もメモリをプールしていちいち確保しないようにすればJavaより速くなる。
しかしいちいちそんな事やってられるか?
2019/06/22(土) 17:20:50.35ID:VTgUFffK0
>>89
c++のままでないとできない最適化って何がある?
2019/06/22(土) 17:40:41.59ID:ICCmixle0
>>91
LLVM は C++->C はできないのでは?LLVM のこと、わかってますか?
2019/06/22(土) 17:41:56.82ID:ICCmixle0
>>92
C++ の template は #define の親玉のようなものですから、qsort() とかの間接ポインタ渡しでなんとかするしかない C が不利な場合はあるとおもいますよ
2019/06/22(土) 17:55:09.83ID:VTgUFffK0
あとconstexprで事前計算してるのもあるね
2019/06/22(土) 18:03:29.07ID:kVNYu7LP0
>>94
allocatorってまさにそのための仕組みなんだけど
2019/06/22(土) 18:48:22.39ID:MmmgKpwaa
>>95
具体的にはあげられないけど、現在の文脈においてある前提が成り立つことが分かることによりできる最適化が、
(最適化を除いて)同じ動作となる別のコードに置き換えられることにより、元の文脈での前提条件が成り立つことを断定できなくなり適用できないという状況があるのではないかと思う。
2019/06/22(土) 18:58:11.17ID:3PgdpjOh0
>>96
そちらこそllvmをまるで理解していないみたいですね
2019/06/22(土) 19:04:53.83ID:cW7wMvLUM
>>100
具体的なのが聞きたい
gccもllvmも中間言語でやる最適化が中心でしょ
そういうc++の特別なフェーズがあるなら興味ある
けど知らずに言ってるなら聞いても無駄だね
2019/06/22(土) 19:27:19.94ID:ICCmixle0
>>101
llvm が変換した IR を C コードに戻すことができるのですか?
2019/06/22(土) 20:26:09.97ID:/7bwQJ5j0
(1) コンストラクタの呼び出し回数削減最適化
(2) クラスが絡むmemory ariasing

(1)はC++かその意味を保った中間言語上で行う必要があり、C言語に逐語訳してからでは手遅れ
(2)も同じくで、クラスの意味を失うような低レベルへの変換を一揆にかけると
クラスFooのthisポインタとかクラス固有のアドレスが他のクラスにもグローバルな関数にも渡っていないことの保証がC言語に逐語訳してからでは手遅れ

な印象
想像なので詳しくは知らん
2019/06/23(日) 01:02:56.59ID:PTFzQo+G0
初歩的な質問で申し訳ないんですけどcinってどういうもんなんでしょうか
cpprefjp見ると標準入力に対する入力ストリームオブジェクトなんて書いてありますけど
iostream.hで定義されてる「なにか」だとは思うんですがどういう型のものなのかとかそういえば全然知らずに使ってたなって
よろしくおねがいします
2019/06/23(日) 01:04:06.42ID:tL1CwC/m0
console input
2019/06/23(日) 01:50:58.01ID:DI9+Pcki0
マニュアルみれ
https://cpprefjp.github.io/reference/iostream/cin.html

std::istream
character input
2019/06/23(日) 02:02:56.98ID:7pjzMc7c0
const inputかと思って親近感がわいていたのに…
109デフォルトの名無しさん (ワッチョイ)
垢版 |
2019/06/23(日) 06:15:35.61ID:6LMXkq2m0
じゃあCトランスパイラのNimはC++より遅いのかな?

https://github.com/kostya/benchmarks
ぐぐったらマジでそうだった
高水準言語から直接コンパイルした方が速いんだな
110デフォルトの名無しさん (ワッチョイ)
垢版 |
2019/06/23(日) 06:35:12.06ID:6LMXkq2m0
C++でクロスプラットフォームなコードを書くのはどれくらい難しい?
Nimはクロスプラットフォームを主張してるんだけどどっちがいいんだろう?
2019/06/23(日) 06:38:35.47ID:xbroTRmV0
Qtで書くだけ
112デフォルトの名無しさん (ワッチョイ)
垢版 |
2019/06/23(日) 07:05:57.27ID:6LMXkq2m0
WindowsもLinuxもMacもカーネルがCで書かれてるらしいけど何でC++じゃないんだろう?
2019/06/23(日) 09:01:51.47ID:Xq17DW5L0
C++がそこまで整備されていなかったから
OSといえばC言語で書くのが当たり前だから
そもそもC言語で十分だから
Linus「C++はレベルの低い奴が使うものだから」
2019/06/23(日) 09:11:04.02ID:p0iHiqR80
>WindowsもLinuxもMacもカーネルがCで書かれてるらしいけど何でC++じゃないんだろう?
何回質問されたことだろうか。
115デフォルトの名無しさん (ワッチョイ)
垢版 |
2019/06/23(日) 10:55:33.78ID:6LMXkq2m0
OSじゃなくて組み込みでも大部分Cでしょ?
なんで?
116デフォルトの名無しさん (ワッチョイ)
垢版 |
2019/06/23(日) 10:57:16.59ID:6LMXkq2m0
https://news.mynavi.jp/article/20170126-a093/
>組み込みシステム向けプログラミング言語の中で「一番好きな言語」としても「C」(29.1%)を選んだ人が最も多く、これに「Microsoft Visual Basic」(16.8%)、「C++」(15.3%)が続いた。
117デフォルトの名無しさん (ワッチョイ)
垢版 |
2019/06/23(日) 11:17:45.87ID:6LMXkq2m0
Linus TorvaldsのC++批判は正しかったのか
https://developers.srad.jp/story/15/03/13/2328200/

C++の最大の問題は学習が難しい事か。
たぶんC++を学ぶ時間でCとJava両方学べるね。
2019/06/23(日) 11:20:59.77ID:JKCTeXCU0
超堅牢に作らないといけないから、
見えないところでコピコン大量に走ったりするような言語は避けられるんじゃないか
ヘッダーに実装書き散らしてるのよくないね
OSはバイナリ境界意識しないといけないし
まあどのみち標準ライブラリは使えないけど
119デフォルトの名無しさん (ワッチョイ)
垢版 |
2019/06/23(日) 11:28:01.94ID:6GXr3JQp0
最近BS/CSが映らなくなった人はここを見ると良い
【B-CAS改造】Bカスカード2038化書き換えツール配布所 205
https://mevius.5ch.net/test/read.cgi/avi/1560914909/1-100
2019/06/23(日) 11:39:08.67ID:4lSN7b3Y0
https://nlab.itmedia.co.jp/nl/articles/1902/19/news078.html
人の顔を生成するaiはどうやって作れますか?
2019/06/23(日) 11:39:50.16ID:Xq17DW5L0
>>115
各ベンダーがサポートするにはC言語がちょうどいい規模だから
2019/06/23(日) 12:03:58.80ID:DC/NnmXU0
>>112
C++ のデフォでのマングリングが外部結合(リンク)を阻害するから、に一票
2019/06/23(日) 12:09:47.82ID:LchWS7uN0
ちがう
ちがうなぁ
ポインタがあって適度に奥が深いから、だ
2019/06/23(日) 12:22:24.97ID:BQwXISYN0
メモリの制御が難しいからじゃね
最近やっと標準でまともなメモリ管理の仕組みを作り込めるができるようになったくらいだし
2019/06/23(日) 14:34:24.36ID:hhhlIxdX0
昔からメモリ制御なんてCと同じことはできるだろ
2019/06/23(日) 14:56:33.46ID:WUJS/EaT0
今のC++なら十分使えるよね
継承やSTL、shared_ptrみたいなことをCで実装してるわけで
それを考えたらC++で良い
2019/06/23(日) 16:01:29.78ID:EoSayXaXa
プログラムの一部にでもRTTIを使用した部分があるとプログラム全体のパフォーマンスが低下する?
2019/06/23(日) 16:37:25.79ID:p0iHiqR80
まあc++でちゃんとしたもの組もうと思ったらデストラクタをしっかり用意するってのが
大事なわけだが、かなりいろんな状況に対応したものにしないとまともに使い物にならん。
これはメタプロバカが思ってるほど難易度は低くない。
2019/06/23(日) 16:59:21.61ID:7M38Ae5l0
>>127
コンパイラオプションでRTTIを無効化するとデータ量が減るのでパフォーマンスが上がる
→つまり一部でも使ってると低下する

まぁ今時は気にする必要無いと思うけど
速度は実測が基本
2019/06/23(日) 17:38:56.55ID:hhhlIxdX0
自前でデストラクタ書くなよ
2019/06/23(日) 18:20:15.96ID:xbroTRmV0
えっ
2019/06/23(日) 18:29:28.72ID:BQwXISYN0
ちゃんと例外を投げないデストラクタを書くんだぞ
fcloseの失敗はもみ消せ
どうせ回復などできない
2019/06/23(日) 21:01:47.41ID:EoSayXaXa
>>129
やはりそうですか、ありがとうございます
速度は今試せないのでまたこんどやってみます
2019/06/23(日) 21:13:15.69ID:PTFzQo+G0
>>107
えーっとcinってのはistream型のオブジェクトってことでいいんですかね
externをいまいちよく分かってないですがヘッダ内で定義されてるから他のファイルでも使えるとという認識で大丈夫ですかね
2019/06/24(月) 07:55:10.22ID:6Zff8TGS0
1.思考停止してそのまま使う
2.外界から齎される無限長の情報列がストリームである、と理解する

好きな方を選べ
2019/06/24(月) 15:40:31.96ID:DnOtpTuq0
何でC++使ってる職場少ないのにプログラム板で上位なの?
2019/06/24(月) 15:56:59.67ID:OO73LhBR0
すく・・・ない・・・?
2019/06/24(月) 16:10:16.23ID:vRXjoyqNM
Web業界の人とかなんだろ
2019/06/24(月) 17:32:13.27ID:i4YKAGQ3r
「C++実践プログラミング」って良い本?
2019/06/24(月) 18:02:59.78ID:HUc+KEird
実は多いだろ?
社内に囲われているだけで
2019/06/24(月) 22:05:46.06ID:qyAEE2sQ0
C++プライマーとaccelerated C++一通りやってeffective C++始めたんだけどすんごくめんどくさーい
acceleratedの後半あたりから思ってたんだけど純粋なロジックやテクニック以外のところで考えなきゃいけないこと無限にあってできるようになる気がしない
実際に開発になってクラスやインターフェイスの設計ってみんなこんな色々考えてやってんの?って
競プロっぽい問題だったりちょっとしたもの作るのは割と面白いけどなんかもう萎えてきた
世の中のプロってやっぱ(modern) effective C++とかmodern C++ designとかその辺りは基礎教養レベルまでもっていってるもんなの?
2年目のペーペーだけどとてもC++のプロになれる気がせんわ
2019/06/24(月) 22:08:08.69ID:tWJeInAS0
そのへんはさらっと何が書いてあるか見ておいて、実際書くときに関係ある部分を参照する本では?
2019/06/24(月) 23:54:52.99ID:4vQIe5sT0
>>141
それは思うわ
結局その辺の不満を改善したのがJava以降のオブジェクト指向言語だから
今C++を勉強すると面倒すぎると感じるはず
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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