C++相談室 part141

■ このスレッドは過去ログ倉庫に格納されています
2019/02/22(金) 03:07:43.52ID:MgOIx7iK
次スレを立てる時は本文の1行目に以下を追加して下さい。
!extend:on:vvvvv:1000:512

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

前スレ
C++相談室 part137 (正しくはpart138)
http://mevius.5ch.net/test/read.cgi/tech/1535353320/
C++相談室 part139
https://mevius.5ch.net/test/read.cgi/tech/1538755188/
C++相談室 part140
https://mevius.5ch.net/test/read.cgi/tech/1547326582/

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

■長いソースを貼るときはここへ。■
 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
2019/03/24(日) 13:55:44.10ID:oV9fIVj4
string_viewはどうだろうか?
670デフォルトの名無しさん
垢版 |
2019/03/24(日) 13:56:05.38ID:Wmd2CxZH
>>668
それはつまり、gccではCStringT::FormatV()相当の実装が困難ということを意味している。
バッファサイズを自分で渡す仕様が最適解ということ。
2019/03/24(日) 13:59:03.55ID:myNgr9GS
>>664
そんな旧態依然のインターフェイス欲しけりゃ自分でやれやってことだろ
672デフォルトの名無しさん
垢版 |
2019/03/24(日) 14:13:40.53ID:Wmd2CxZH
それにつけてもostringstreamの醜さよ。
2019/03/24(日) 14:40:52.61ID:EkBj7yKG
streamサイコー<<<<<<
2019/03/24(日) 14:51:51.49ID:a59b/YMZ
clang++使ってみたら、std::async使えない・・・
さすが、フリーだな
2019/03/24(日) 14:52:15.46ID:b6oq5ESd
clang++使ってみたら、std::async使えない・・・
さすが、フリーだな
676デフォルトの名無しさん
垢版 |
2019/03/24(日) 16:30:35.16ID:4oYv+rwZ
>>672
何処がひどいですか?
2019/03/24(日) 16:50:49.33ID:GJPzxHHg
CStringのくそ設計にいまさら文句言ってもなぁ
そもそもメンバ関数、しかもdestination側と言う時点で使う側の利便性考えていない
2019/03/24(日) 16:55:28.18ID:xAoD2jBj
遅いしフラグがいっぱいあるし読みにくいし
ostream& T::operator<<(ostream&, const T&)やistream& T::operator>>(ostream&, T&)をTにつき一種類しか定義できないから
万全の汎用性を有しているかというとそうでもないし、

唯一の長所は型安全なところだが、意図通りの出力になるまでどうせトライ&エラーすることになるのだから
それ以下の工数でprintf()の書式ミスを発見できるわ;;
2019/03/24(日) 16:58:49.26ID:xAoD2jBj
CStringをdestination側に使うときの書き方はスゲーカンタン
 CString cstr;
 cstr = "Hello World!\n";
でおkコピー程度でCstring::Format()を使う必要はナス、

ソース側に使うときはむしろstd::stringよりカンタン
 printf("%s\n", cstr);
で通る
2019/03/24(日) 17:01:05.52ID:xAoD2jBj
まあ個人k的にはprintf("%s\n", (char*)cstr); ぐらいで手を打つが
2019/03/24(日) 17:10:19.89ID:b6oq5ESd
CStringなんて使うのはc言語だけだろ
2019/03/24(日) 17:19:45.54ID:PmamUspu
>>653
ここはマウント取りたいだけのバカが沢山居るけどさすがに標準化委員会は違うだろ
ただソフト開発者や標準・boost以外のライブラリ設計者はほぼ居ないんだろうなとは思うが
2019/03/24(日) 17:32:06.96ID:GJPzxHHg
標準化委員会はよくも悪くも開発者目線だなあとしか
提案者の用途さえ満たせれば良い的な仕様が多々見られる

最近だとto_charsとfrom_charsなんてまさにそんな感じ
2019/03/24(日) 17:44:39.67ID:6DYvLdXI
>>678
>フラグがいっぱいあるし

この i/o stream のフラグってきちんと定義されているのでしょうかね…
処理系に依存してテキトーな気がしてしかたがない
https://mevius.5ch.net/test/read.cgi/tech/1434079972/30 を書くときにさんざん調べたつもりなのですが、よくわからなかったことを記憶しています。
今みると、嫌々 stream.fail() でごまかしていたようです
2019/03/24(日) 21:04:38.58ID:0R743LPx
>>656
江添レベルの奴がやってる時点であんまここと変わらんだろ。
初心者に初めからautoで宣言させたコード実行させようとするような馬鹿だぞ。
初心者のためよりも自分のエゴ満たすためってのがあまりに優先されすぎてる。
2019/03/24(日) 21:11:22.21ID:EkBj7yKG
>>682
そんなわけないが
研究者だけでなく様々な企業のエンジニアも参加している
お前らの好きな組み込み業界や自動車業界も人を派遣してる
2019/03/24(日) 21:17:23.06ID:EHuBBnjq
つい最近まで「トライグラフは現場でバリバリ使いまくってるから無くしちゃダメー!」って必死に訴えてる人達がいっぱい居たのが標準化委員会だよ
2019/03/24(日) 21:37:39.78ID:GJPzxHHg
初心者にauto使わせるのは悪くないというかむしろそうすべきだろ。
現場が疲弊云々はそんな現場辞めてしまえとしか
標準化委員会はc++バリバリに使っている現場の意見が十分反映されているのだから

文句があるなら委員会に参加すれば良いんだよ
2019/03/24(日) 22:05:21.71ID:iBzlPNVB
>>687
IBMだけな・・・
2019/03/24(日) 22:08:27.13ID:zVUhrel1
>>688
C++を使わせないのが正しい。
691KAC
垢版 |
2019/03/24(日) 22:12:29.07ID:baOwhHMi
>>690
そうじゃない
688の思想は、Cにも取り入れる方向だろう
2019/03/24(日) 23:03:50.83ID:0R743LPx
あれで現場の意向が本当に入ってると思ってる奴がいるのか?
c++の衰退とかデータで見ても信じない連中なのかね。。
まるでどこぞの統計データを今でも信じてる連中みたいだ。
693デフォルトの名無しさん
垢版 |
2019/03/24(日) 23:18:22.54ID:Wmd2CxZH
メモリやCPUが安価で高性能になれば、コンパイル言語全般のシェアが下がるのは当然なのでは。
2019/03/24(日) 23:22:35.66ID:dT6Xb8jy
>>693
時代は静的型だよ
2019/03/24(日) 23:31:19.17ID:KmR/jJEd
現場にはcとc++が違うことを知らない奴も多いwww
2019/03/24(日) 23:38:44.81ID:GJPzxHHg
実際現場の意見入っている感じするじゃない?
どちらかと言うと実装側の都合でデグレードされたりすることが多い
コンセプトいい加減入れろよと
エラーメッセージわかりづらいし、SFINAE面倒くさいんだよ
2019/03/24(日) 23:40:40.71ID:PmamUspu
>>688
>初心者にauto使わせるのは悪くないというかむしろそうすべき
型や参照、ポインタ、修飾とかの違いでコンパイルエラーになるのを経験しないのは危険だと思うけどねぇ
推論された型を勘違いした上にたまたま通ってしまう可能性もあるわけだし

便利なのは否定しないけど静的型付け言語であるC++のパラダイムを変えるような機能ではない
2019/03/24(日) 23:46:22.50ID:dT6Xb8jy
>>697
そういうことを言っていいのは出来合いのtypedefを使わないで全ての型名を愚直に書いている奴だけ
2019/03/24(日) 23:53:18.03ID:PmamUspu
>>698
重箱の隅
>>685から読み直してみ
700デフォルトの名無しさん
垢版 |
2019/03/24(日) 23:56:09.01ID:4oYv+rwZ
キリバンゲット!!
2019/03/25(月) 00:05:20.37ID:lHhl7aCC
>>685
この書き込み自体がもうね
江添の考え方に反対するならそう言えば良いのに、エゴとか完全に個人攻撃しちゃっているじゃない
2019/03/25(月) 01:23:08.49ID:dMeCWU6I
結局ビャーネって何を作ったの?
言語の仕様なんかは磯さんが決めてんでしょ
2019/03/25(月) 01:44:06.00ID:/j2VHiDc
すべてはユダヤの陰謀だあぁぁ!!!
704デフォルトの名無しさん
垢版 |
2019/03/25(月) 01:47:24.45ID:LV8gdQ4G
陰謀論を唱えるような人は、先入観が強すぎて不具合の原因を見つけ出せずに時間を浪費するタイプの人だから、プログラマをやめるべき。
2019/03/25(月) 07:31:49.87ID:+RmEIgLd
政治なんですよ政治
2019/03/25(月) 07:46:27.12ID:mW0SiMKO
MISRA-C 2004 の本は、トヨタなど大企業の50人が書いた本だけど、
ドワンゴ江添の本は、彼1人で書いたから、超人技!

Linux プログラミング・インタフェース、Michael Kerrisk、2012

この本とともに、神の書と言える!

KADOKAWA が言ってる。
当社はプログラミングの会社ではないけど、
なぜか、プログラマーが多いし、募集もしていますw
707デフォルトの名無しさん
垢版 |
2019/03/25(月) 11:25:12.65ID:MuEFgcsw
>>686 裁判費用をクラウドファウンディングで捻出する予定はありますか
2019/03/25(月) 11:39:13.03ID:LV8gdQ4G
首都は「ヌルスルタン」、前大統領の名前に改称 : 国際 : 読売新聞オンライン
https://www.yomiuri.co.jp/world/20190325-OYT1T50119/
2019/03/25(月) 21:09:33.79ID:DI1df1TX
ファンクタって1回だけ使うならインスタンス生成する分関数より高コストで繰り返し使うなら生成済みのインスタンスを再利用できるから低コストという認識であってます?
2019/03/25(月) 21:21:15.56ID:CfE+HAKL
一切知りません
2019/03/25(月) 21:21:26.20ID:8+7iDICf
あってません
2019/03/25(月) 22:35:05.39ID:8zmAEr9n
>>701
あの教え方が本当に初心者のためになると思ってんの?
完全に書く側の都合による本にしかなってない。
ああいうメモリ意識の低い本で教えることはc++を使わせる上でマイナスにしかならん。
2019/03/26(火) 00:05:13.64ID:Pu4N06vt
>>712
なるだろ?
想定している利用者像が違うだけ
始めにauto使わないように慣らされたら、どうでも良い場面で型指定するバカに育って逆に面倒臭いだろ

まあ一番の害悪はnewやdelete、果てはmallocやfree使わせる奴だが

動的多次元配列でnewをループで入れ子にするのとか最悪
2019/03/26(火) 00:09:39.69ID:Xorohn3v
昨今のスクリプト言語は大抵autoじゃねえの
そうすりゃ初心者と型システムの都合なんてのはクソくらえ、だ
入門者にゃ型なんて意味無しじゃん
それに初心者にどうやってマイナスかどうか確かめたのか怪しい

ついでに型&autoとメモリ意識とは違うからな
2019/03/26(火) 00:12:14.24ID:Pu4N06vt
大体intとかあまり生で使わんよね
少なくともtypedefしておくもんじゃね
716デフォルトの名無しさん
垢版 |
2019/03/26(火) 00:29:37.47ID:otrrnTwO
このスレ住民は、 auto によってコンパイル時には分からない意図せぬ動作で困った経験ってある?
2019/03/26(火) 01:09:42.91ID:pnr0HSCh
c++って便利なのは便利なんだが、やっぱ遅いよ
stream,asyncなんか、使い物にならん
2019/03/26(火) 01:11:09.93ID:SW23xWSB
c++が遅かったら何が速いんだ
2019/03/26(火) 01:12:08.10ID:qIOvz7c6
いや、コードを書いてるやつがいつまでも成長しない
だからコードが遅くなる
それがC++wwww
720KAC
垢版 |
2019/03/26(火) 01:19:01.25ID:E0p6Aumv
>>715
いや、流石にintは生で使うだろ。
intで十分な意味持ってるんだが、
どんなtypedefするんだ?
2019/03/26(火) 01:22:01.94ID:pnr0HSCh
>>718
つD
2019/03/26(火) 01:34:39.27ID:SW23xWSB
そんな流行ってないもんでまともな仕事ができるかw
2019/03/26(火) 03:04:08.84ID:5DO30Xtv
Visual Studio使ってたらインテリセンスがautoをコンパイル前に展開して表示してくれるけど
2019/03/26(火) 03:05:29.57ID:5DO30Xtv
テンプレート以外で変数がコンパイル前に決まらないことってあるの?
テンプレートならauto使う必要なくね
725デフォルトの名無しさん
垢版 |
2019/03/26(火) 03:35:14.19ID:D6PYEJQv
テンプレートだからこそ使いたい。
2019/03/26(火) 03:48:53.98ID:fe5vrK8S
>>653 >>686
経験豊富なプログラマが沢山参加しているのが事実なら、船頭多くして
船山に登る状態なのかも知れない。
2019/03/26(火) 04:01:17.90ID:fe5vrK8S
>>692
実感として、年々汚くて使いにくい仕様が増えている気がする。
2019/03/26(火) 07:21:28.81ID:JExaD8IX
>>714
たいていのスクリプト言語は動的型付け
autoと同じと考えてるならレベル低すぎ
2019/03/26(火) 09:23:59.45ID:Uaj934aJ
>>722
仕事で流行ってる流行ってないなんて関係ないだろw
2019/03/26(火) 09:42:45.74ID:SW23xWSB
流行ってない=情報がない、人がいない、資産がない=ゴミ
2019/03/26(火) 11:19:13.28ID:T41fm+6R
ビジネスの都合しか考えられないゴミ
JavaとかC#使ってれば
2019/03/26(火) 12:49:08.72ID:hIENxLfE
ビジネスの都合でc++って場合が多いだろ
ここに居るような奴等は
733デフォルトの名無しさん
垢版 |
2019/03/26(火) 15:10:01.00ID:5W15sMAG
>>727
wとかsとか付いたのが無駄に増えて面倒になったな

int32_t とか uint32_t とか uint64_t とかは賛成
2019/03/26(火) 17:06:14.62ID:fe5vrK8S
>>733
そういう名称の問題だけに限った話ではなくて、結論から言えば、仕様を
多数決で決めてしまうと初心者向けの言語になる。スクリプト言語とかに
近いような。

構造的な問題とか、統一感的な問題とかもあるし、そもそも、C/C++の
良さまで失うような標準仕様だとかも、例えば、boost などの、
stl = standard template library なんかも、ここでは信者が多いかの
用に見えるけど、まるでC/C++とは思想の異なる全く別のスクリプト言語の
ような仕様になっている感じがする。
2019/03/26(火) 17:40:36.88ID:hIENxLfE
>>734
STL否定している時点で、そもそもC++の想定しているユーザーからは外れているんじゃね
iostreamならともかく
2019/03/26(火) 17:46:54.15ID:NEQZ2SJi
>>735
1998年くらいまでのC++はまあまあ良いと思っていたが、それ以後、別の
言語になってきてる気がする。特にここの人はSTL信者が多いが、
実は、98年くらいまでのC++とは似ても似つかないものだよ。
それを使ったコードには、往年の C の片鱗さえも残ってない。
だから、言語名から C という冠を下ろすべきだ。
2019/03/26(火) 17:51:58.82ID:hIENxLfE
信者も何も標準コンテナ使わずに何使うんだよ
自前で書くとかそれこそダメな方向だろう
eastlなんかでも使用感をなるべく標準に近づけているのに
2019/03/26(火) 18:00:25.71ID:XEttPGHl
C++98以前のC++が今より良いってどんなマゾだよ
2019/03/26(火) 18:04:33.55ID:hIENxLfE
template自体嫌いなんかな
それもうCで良いじゃない
2019/03/26(火) 18:10:49.26ID:qKdh3SVz
C++ の仕様に STL などというものは存在しない。
かつて STL と呼ばれていたものは完全に C++ の一部になっているし、
仕様の他の項目と区別する方法はない。
C++ 使いが C++ の機能を使うのは当たり前だ。

気に入らないと思うのは自由だし、良くない部分だって実際あるが、
常識的には標準が用意しているライブラリは言語の利用方法を体現するものであって、
言語の基本思想と極端に乖離してるわけないだろ。
2019/03/26(火) 18:36:42.18ID:5P0efKyY
標準ライブラリだからといって使う義務はないわけで
最小限のランタイムで動くnative言語というところがc++を使う理由になってるプロジェクトが多いだろう
その目的にそぐわないのが今の標準ライブラリのデザイン
メタプログミングの遊び場とかしている

ただし20年前と比べるのはどうかと思うが
2019/03/26(火) 18:44:59.17ID:qKdh3SVz
標準ライブラリをどうしても使わなきゃならんってことはないけど、
使わないための積極的な理由がなきゃ標準を選択するよ。
リソースが制限されているところで使わないっつーならそれはそれでいいよ。
それも出来るのが C++ だからな。
2019/03/26(火) 19:08:13.59ID:NEQZ2SJi
結論から言えば、STLはライブラリとしての「センス」が悪い。

POSIX の fopen()系や printf() 系などは使いやすいと思っていたが、
STLにはそれを感じないし、coutも変だったが STLもそれと同じ轍を踏んでる感じ。
2019/03/26(火) 19:17:04.87ID:+JfIlK2p
>>743
お前さんのレスからは、「僕の好みじゃないからヤダヤダ」という程度のことしか見えてこない。
2019/03/26(火) 19:19:36.63ID:NbUyZWCM
誰でも頭が良くなる、プログラムが書けるようになる方法が発見される 86052
https://you-can-program.hatenablog.jp
746デフォルトの名無しさん
垢版 |
2019/03/26(火) 19:23:47.27ID:/YNua4WM
メイヤーズは最高に美しいライブラリと言っている
2019/03/26(火) 19:27:39.30ID:otrrnTwO
すっぱい葡萄
ttps://ja.wikipedia.org/wiki/%E3%81%99%E3%81%A3%E3%81%B1%E3%81%84%E8%91%A1%E8%90%84
 自分のものにしたくてたまらないにもかかわらず、努力しても到底かなわない対象である場合、
 人はその対象を「価値の無いもの」「自分にふさわしくないもの」と見なそうとし、
 それをあきらめの理由として納得し、心の平安を得ようとするものである。
 フロイトの心理学では、これを防衛機制および合理化の例とする。また、社会心理学においては、認知的不協和の例とされる。
 英語には、この寓話を元に生まれた熟語として "sour grapes" があるが、これは「負け惜しみ」を意味する。
2019/03/26(火) 19:27:52.44ID:NEQZ2SJi
やっぱりネットは駄目だ。
頭の悪いプログラマが支配してる。
2019/03/26(火) 19:29:16.09ID:fe5vrK8S
>>747
意味不明だな。誰でも入手できるライブラリで、なおかつ、
昔のC/C++より誰でも出来るスクリプト言語よりだというのに。
言ってることが逆さま。
2019/03/26(火) 19:30:19.23ID:qKdh3SVz
cout よりも printf が相対的に良いという人はたくさんいると思うが、
iostream が特に駄目ってだけで、
C++ 的に見れば printf がセンスいいとはとても言えんぞ……
2019/03/26(火) 19:31:00.18ID:eqSsbUbG
昔みたいにドヤ顔してboost使う必要がなくなったのはいいことだと思うよ。標準が充実していってさ。
最初からヌエ的な発展しかありえないのはそういうものだと思うし。
2019/03/26(火) 19:31:45.68ID:5p1uA41w
>>747は多分>>743とかに向けたつもりだと思うんだが
なぜか逆の立場の>>749がダメージ受けてるという
2019/03/26(火) 19:34:05.19ID:5p1uA41w
あ、すまん逆ではなかったな
2019/03/26(火) 19:39:12.76ID:fe5vrK8S
ただ、多数決というのは、正しくも良くも無いけどな。
2019/03/26(火) 19:48:04.23ID:gp3lODpj
だったら君が最高の言語を作ればいい
設計は君の最高のセンスをふんだんに盛り込んで独裁的にやればいいよ
2019/03/26(火) 19:59:43.01ID:otrrnTwO
とりあえず全員ダメージ受けとけ。
2019/03/26(火) 20:35:50.63ID:OoUi3Qk7
stlのないC++なんてクリープ入れないコーヒーみたいなもん
2019/03/26(火) 21:11:51.51ID:ExDeReqX
>>740
C++ の仕様にSTLがないって本当かいな、と思って調べたら
確かに n3337.pdf (C++11のドラフト?) には STL という単語が出てないね。
STLのセンスが良いか悪いか、使うべきか使わざるべきか、
その辺について意見を出せるほど見識はないんで、事実の報告だけ。


『プログラミング言語C++』第4版に「STLなんちゃら」って章が
いくつか載ってるから、仕様の言葉だと思ってたわ。
2019/03/26(火) 21:17:41.21ID:zBAPpXX5
プログラミング言語C++に後にSTLとなるテンプレートライブラリ作ってストロストラウップに勧めに来た奴が居たので
ストロストラウップが試したら、彼が信条とする「良いライブラリ10箇条に全部あてはまってこりゃスゲーとなったという
エピソードがあったような
なかったような
2019/03/26(火) 21:25:01.06ID:5p1uA41w
STLは俗称だし、定義も曖昧
皆そう呼ぶのが便利だからSTLという呼び方してるだけ

HPの研究所で働いてたAlex Stepanovが発案して94年あたりに持ち込んだっぽい
ライブラリじゃなくて、いわゆる「汎用コンテナ(データ構造)ライブラリ」についてBjarneが重要と考えたチェックリストのほぼ全部にパスした
2019/03/26(火) 21:30:19.89ID:pGZA6Dfc
c++の仕様にSTLが無くてもrange-based forのようにSTLが備えてるbegin,endに依存した構文は出てる。
2019/03/26(火) 21:41:34.25ID:aW2tbkLS
STLつってもどうせvectorとmapくらいしか使っとらんだろ。
まあそれで十分なんだが。
2019/03/26(火) 21:52:00.50ID:2lj4xCZe
STLという言葉を発することがもうほとんどなくないか?
stdは使うけど、まあどっちも輪郭のはっきりしない言葉だ
764デフォルトの名無しさん
垢版 |
2019/03/26(火) 21:53:11.01ID:D6PYEJQv
STLは洗練されている。
素晴らしいデザイン。
コンセプトが入ったらさらに洗練できると思う。
2019/03/26(火) 21:58:59.96ID:5P0efKyY
>>742
リソースが制限されてるというより、最大限のパフォーマンス出す場合な
つまりリソースがリッチかどうかは直接関係ない
AAAのpcゲームとかね

パフォーマンスそこそこでいいならc++なんか使う理由がない
遊び以外
2019/03/26(火) 22:03:45.01ID:qKdh3SVz
>>765
計算量はリソースの一種だで。
2019/03/26(火) 22:05:23.77ID:Pu4N06vt
最大限のパフォーマンスを出すために作ったeastlみたいなのも標準の使用感踏襲するくらいには標準の設計は良くできているよ
768デフォルトの名無しさん
垢版 |
2019/03/26(火) 22:05:31.83ID:D6PYEJQv
STLはわしが育てた。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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