C++相談室 part140

レス数が950を超えています。1000を超えると書き込みができなくなります。
2019/01/13(日) 05:56:22.70ID:9RrR7Arz
次スレを立てる時は本文の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/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/02/17(日) 09:47:35.17ID:EB+Wm9hA
処理の一部を関数として受け取れるように関数書いといて
呼び側はラムダを好きに作ってそこに突っ込む
DRYするときとかに割とよくやるでしょ
880デフォルトの名無しさん
垢版 |
2019/02/17(日) 11:01:41.76ID:4OnEl3He
>>875
なるほど。それはC#なんかではよく思った。以前はdelegate関数を定義するのがめんどくさくてかなわなかった。
しかしC++はマイコンでしか使わないし、まだ恐る恐る使ってるレベルなのでthreadとかは使ったことがない。

以前はPC側はC#、マイコンはCと使い分けて書いていて今回初めてマイコンにC++を使ってるが便利
だとは思うが、困ることも多い。
 二人で開発をしているが、相方が意味のない機能をやたらつかいたがる。string やvectorをドンドン
使うのでプログラムが無意味にバカでかくなってしまう。自分は基本的にCレベルの機能しか使わない。
でもクラスやNamesapce が整理する上では便利だし、constexperも好き。
ラムダはデバッグターミナルを切り替えるのに使ってるが他にはつかうところが思いつかなかった。
2019/02/17(日) 11:05:05.20ID:ihUXQF5N
ラムダ式は名称が良くない
2019/02/17(日) 11:10:40.23ID:vi4O111w
>>880
君にはCがお似合いじゃないかな
コンパイルや実行時のある程度のオーバーヘッドを許容してでもOOPを導入して
楽に安全に大規模で複雑なプログラムを開発しようってコンセプトに馴染めないんだろう?
stringやvectorを使うとはそういうことだからこれを無意味と考えてる時点で向いてない
2019/02/17(日) 11:14:31.53ID:taqGnUFh
マイコンならCで関数ポインタ使うような所で一部代わりに使う感じじゃないの
ポインタを動的に取り替えたりしないなら間接参照がなくなって速くなる
2019/02/17(日) 11:28:22.52ID:WAEZojeG
頭が悪くてその機能を理解出来ず使いこなせないだけなのに
「書きたくなるようなメリット教えろ」と言い換えてるだけだ

「わたしの頭が悪い」ではなく「わたしにその機能にメリットが無いように見せているのが悪い(そちらから自発的にアピールしないのが悪い)」としてる
バカじゃないのかこいつ
2019/02/17(日) 11:32:45.27ID:pY7p2BwH
C++で安全になってるプロジェクトを見たことがありません。
2019/02/17(日) 11:55:17.00ID:Y22Zw0Bq
>>884
上の発言はおいらが書いたわけじゃないけど、どんどん色々と新しくなってるから
おいらも含めて昔からC++を使ってた人にとっては、vector、string、
smart pointerなどは知らないことなんだよ。文字列はMFCのCString使ってたし、
vectorの代わりに、自作のクラス・テンプレートを使ってた。
2019/02/17(日) 12:13:43.95ID:vi4O111w
>>885
それはC++のコンセプトを理解せずにまるでCみたいな手法を混ぜ込んでくる人が一定数居ることが最大の原因だろうね

Cを使うと低スキルのゲロゲロなC++プログラマを排除できるけど
C++を使っても低スキルのゲロゲロなCプログラマは排除できない
これはC++の弱点と言っていいだろう
2019/02/17(日) 12:19:18.91ID:EB+Wm9hA
vector stringがない昔ってC++98より前のお話か・・・?
2019/02/17(日) 13:07:09.82ID:Y22Zw0Bq
>>888
1998当時、本を買ってC++を学ぶと、C++98 の事は書いてなかったんだよ。
C++98 が本に書かれるようになったのは、何年か後。

使えても、実際に使われるようになったのは、感覚的には、
この5〜10年ほどなんじゃないかと思う。
2019/02/17(日) 13:26:22.07ID:taqGnUFh
VCが糞すぎた時代が長かったからねえ
だいたいあいつのせい
2019/02/17(日) 13:31:49.98ID:B6Z0xbW8
>>887
そう、絶対いるんですよ。
大規模になればなるほど避けられない。
2019/02/17(日) 13:47:28.47ID:GrqAm9XM
>>887
リーナス乙
893デフォルトの名無しさん
垢版 |
2019/02/17(日) 13:50:11.60ID:7mUUrd8D
>>857
GCは知らんけどSSDとかのレロケーションで固まったように見えるケースはあるね
2019/02/17(日) 14:51:27.44ID:CcQWXdbL
>>873
これとか頻出だと思うんだけど不思議と見たこと無い人居るんだなあ
他の言語でも良くあるパターンなんだけど
2019/02/17(日) 16:14:40.21ID:Y22Zw0Bq
このスレを見ようとすると、

503 Service Temporarily Unavailable

が出る人いる? 書くことは出来るはずだから、書いてみて。
2019/02/17(日) 18:54:54.93ID:MvGK95PG
>>876
結局ラムダ式の変数名考えなきゃならんのだから命名の手間は一緒では?
まさか f にする気か?
2019/02/17(日) 19:05:30.20ID:+0nZrljm
>>896
関数名って書いてあるんだが…
引数の命名は必要だけどスコープ狭いから命名にたいして苦労はしないだろ
それこそx, yとかでもいいレベル
2019/02/17(日) 19:07:19.51ID:CcQWXdbL
fでも良いレベルならfにするしもうちょっと詳しい方がいいときは動詞にする
2019/02/17(日) 19:18:21.48ID:MvGK95PG
>>897
命名面倒だからラムダ式で程度のもならprivateなんだし適当でいいのは同じだろ
2019/02/17(日) 20:01:49.45ID:taqGnUFh
メンバ関数だとクラス内全体に名前見えちゃうだろ
スコープ狭いから適当でいいって言ってるのに
2019/02/17(日) 20:22:43.95ID:naWxhgEk
>>899
まんま使えない子の意見でワロタ
いつもテキトーに命名してるんだろうな w
そもそもC++のprivate指定ってスコープの指定じゃないし
2019/02/17(日) 22:32:40.23ID:O/E0SKNM
>>894
c++慣れしてる人ほどスコープの抜け方になんとなく不安を覚える書き方だからだろ。
2019/02/17(日) 22:44:39.54ID:TOi2tzGo
>>887
>Cを使うと低スキルのゲロゲロなC++プログラマを排除できるけど
>C++を使っても低スキルのゲロゲロなCプログラマは排除できない

無論、低スキルのゲロゲロベロベロなC++を排除できるほうが優れた手法といえるだろう
上記のどちらかを選べ、というのなら、私はそうする
2019/02/17(日) 23:36:21.11ID:7lxezDVs
>>886 >>889
俺も 1998 年頃に ARM を読んで C++ を学んだが、そんな恥ずかしいことよう言わんわ。
当時の、それも日本語に限ってもネット上には情報があふれてたし、
2000 年頃になるとCマガ (επιστ?μη の連載) でも string や vector は取り上げてるし、
避けて通る方が難しいくらいの状況だったので、要するにお前が「あえて避けてた (逃げてた)」だけ。

そりゃあ当時の Windows での事情を考えれば MFC が妥当な選択だし、
MFC を使うとなれば文字列は CString を選ばざるを得ないというのはわかるよ。
よほどリソースが限られている組込み系とかなら vector でさえキツいって
状況だってあるかもしれんというのはわかるよ。
それに慣れてたら標準のライブラリの方がなじみが無いかもしれん。

でも、そういったライブラリのクソさに打ちのめされてきた経験があればなおさらのこと、
よりよい標準には飛びつかざるを得ないだろ。
よりよいということが理解できないほどクソの臭さに慣れてしまったなら、
そりゃやっぱりお前がクソなだけだわ。
2019/02/17(日) 23:49:56.95ID:WLFlc2AV
久々のダークサイド餃子
2019/02/18(月) 00:39:07.20ID:90CTQpRS
横からだが
>>904
>2000 年頃になると
>>889
>C++98 が本に書かれるようになったのは、何年か後。

たかが標準ライブラリでマウントとかやめた方がいいよ、見てて恥ずかしい
>>878なんかもそうだが
2019/02/18(月) 01:21:22.59ID:ViRlfcsh
>>906
大衆向けのプログラミング雑誌であるCマガにすら! 2000 年頃にはと言ってるんであって、
1998 年当時にでも情報はあふれてたと書いているんだが、そんなことも読めんのか?

その「たかが標準ライブラリ」すら知らん最低以下のクソ >>889 奴が
「昔から C++ を使っていた人にとっては」とか言って代表面してるのをぼんやり見てられるほど
俺は人が出来てないんでな。
908デフォルトの名無しさん
垢版 |
2019/02/18(月) 01:21:47.26ID:yYX5e63o
福田の本ほどわかりにくいものはない。
非お勧め。
2019/02/18(月) 03:09:31.91ID:90CTQpRS
>>907
>>889,>>886に人格攻撃されるような書き込みあるかね?
ついでに言えば俺も自作線形リストとか書いてたけど
(その頃はC++使い始めて2年程度で、参考にしてた本も古かったのでSTLについての解説が無かった)
STL知ってからは完全にそっちに移ったけどね
標準ライブラリ信者のお前からしたらそれすら気に入らないんだろうな
ほんと何様だよお前
2019/02/18(月) 03:12:36.05ID:90CTQpRS
あと1998年でネット使える環境の人間そんなにいねーよ
てかその当時からプログラミングやってるにしては・・・w
2019/02/18(月) 03:24:59.60ID:ViRlfcsh
>>909
最初は知らないというのは当然だし、使わないという選択をすることは否定しない。
規格にあっても実装が使い物にならない時代だって知ってる。

>>886 が学ぼうともしなかっただけなのに時代のせいにして俺を含む同年代の人間を巻き込みやがった。
何様だよっていうなら、勝手に時代の代表面をした >>886 に言うべきことだろうが。
2019/02/18(月) 03:42:21.75ID:90CTQpRS
>>886,>>889は知らないとしか言っておらず、使わないという選択だの使い物にならないだのは
一言も言ってないぞ
2019/02/18(月) 04:40:23.60ID:ViRlfcsh
>>912
俺が標準ライブラリに拘泥しているみたいに言うから反論したんであって、
関係ない >>886 を巻き込むな。
2019/02/18(月) 05:05:11.21ID:zr0LtZh3
>>906
> たかが標準ライブラリでマウントとかやめた方がいいよ、見てて恥ずかしい
> >>878なんかもそうだが
こっちは標準ライブラリの話じゃないんだが…
一応理由も書いてあるし
悔しくて当たり散らしてる感じ? w
2019/02/18(月) 05:13:59.72ID:90CTQpRS
>>913
>>904, >>907, >>911
マジで何言ってんの、頭沸いてるだろ
自分が何書いたか読み返せキチガイ

>>914
やってることは同じだろ、ラムダ使えないとか勝手に前提作ってマウントとか、やってて悲しくならんか?
2019/02/18(月) 06:15:11.87ID:zr0LtZh3
マジで当たり散らしててワロタ
2019/02/18(月) 06:31:20.82ID:90CTQpRS
アホだろお前
918デフォルトの名無しさん
垢版 |
2019/02/18(月) 08:53:15.92ID:LEH693AC
Visual C++ 2010 Express に相当する、無料版の最新版はどれでしょうか?
2019/02/18(月) 08:55:21.66ID:m+MvlS9t
2018 Community
2019のプレビューも出てるけど
920デフォルトの名無しさん
垢版 |
2019/02/18(月) 09:11:24.69ID:LEH693AC
ありがとう >>919
2019/02/19(火) 01:06:26.45ID:V8qmPrEh
ラムダ式で定義する関数の名前を動詞にしようとする香具師はどうしようもない…
2019/02/19(火) 01:36:14.38ID:HoDktNU7
auto型引数が使えるの知ってラムダ式が便利だと初めて感じた
テンプレートと違ってスコープ内でしか使わないから想定外の型が放り込まれることもないから適当に作れる
2019/02/19(火) 07:50:59.68ID:1erPK1jn
JavaからC++のプログラムを呼んでるのですが、こういう場合にC++のプログラムをgdbでデバッグしたいときってどうしたら良いですか
2019/02/19(火) 08:09:41.11ID:fDbgv8CD
アタッチできないのかねえ
2019/02/19(火) 08:23:25.75ID:1erPK1jn
できないです
2019/02/19(火) 09:41:57.99ID:fDbgv8CD
JNIでデバック、みたいな文章いっぱい引っかかるけどなにが違うんだろうね
2019/02/19(火) 09:54:37.53ID:b+RKSXhJ
ランタイムである点です
928デフォルトの名無しさん
垢版 |
2019/02/19(火) 12:56:43.76ID:Dp5mXjEy
>>922
便利だけど用途は限定的ってことですね
2019/02/19(火) 13:49:45.72ID:h1wI7nx1
アタッチできない理由を書けよ
2019/02/19(火) 14:03:05.95ID:JAI+ozPz
そう言えばなんかソシャゲでバグの説明にソースコード出した奴無かったっけ
確かラムダ式使われてたような記憶があるんだけど何だったっけ?
2019/02/19(火) 14:08:36.63ID:JAI+ozPz
ごめん
ググったら出た
2019/02/19(火) 14:19:25.93ID:/4RDdr4I
ドッカンバトルかな
2019/02/19(火) 15:36:52.16ID:WpsDjOEI
>>761
そもそもC++ではインタフェースなんか作らないのが吉
そこはC#
C++は処理実体を担わせるべき
2019/02/19(火) 16:55:21.34ID:h1wI7nx1
GUIのことをインターフェースって呼ぶ風潮
2019/02/19(火) 17:05:34.91ID:cyInrh9G
(GU)I
2019/02/19(火) 21:34:44.26ID:DbU8mxgP
(CU)I
2019/02/19(火) 22:02:44.91ID:0/4iEJd+
mfcとかいうからjavaのinterfaceと思いきやcomみたいなものを指してるんじゃないかと勘ぐっちゃったよ
2019/02/20(水) 05:22:26.29ID:wMUHduDL
言語単体では図形描写というのはできないのですか?
また、図形描写する機能は一般的になんと呼ぶのですか?

javascriptだとhtmlやcssを使うと思います。
2019/02/20(水) 06:08:35.28ID:uLJjwTiH
私のプログラムはポーカーフェイス搭載
何考えてんだかさっぱりわからん
2019/02/20(水) 06:13:56.92ID:V5JGZApS
>>938
画像を扱う機能をもった外部関数(ライブラリ)を呼ぶことで画像を表示する。
その意味では「C++では言語単体では図形描写できない」という認識で正しい。
…よね? 標準ライブラリにグラフィック含まれてないよね。

「図形描写する機能」ってのは一般的には何て呼ぶんだろ。
昔は「グラフィックライブラリ」とか言ったけど、
現在は「ウィンドウライブラリ」とでも言うのか?

Windows なら「Windows API のグラフィック関連部分」とか、
X Window System なら「X の API」とか、具体的に名指しするかな。
もっと上位のクラスライブラリでも同様かと。
2019/02/20(水) 06:44:28.39ID:wMUHduDL
>>940
グラフィックライブラリで調べてみます!
2019/02/20(水) 06:45:11.12ID:kMkx71jX
>>938
svgを出力しなされ
2019/02/20(水) 06:48:28.01ID:uLJjwTiH
図形描画は基本的にはメモリ配列に描画することだからな
2次元配列にドット打ったり直線引いたりとかcでも標準化されててもいいような気がする
2019/02/20(水) 06:52:12.33ID:6H7Ao8nE
標準に組み込まれてる言語がどれだけあるのだろうか
2019/02/20(水) 07:10:25.48ID:oqw8gF3u
>>944
言語自体に組み込まれてるのはNBasicとかぐらいしか知らんわ
2019/02/20(水) 07:15:02.69ID:6H7Ao8nE
WinFormsはC#の標準ライブラリだろうか
2019/02/20(水) 07:36:29.38ID:lAUU9gyq
cairoをC++標準に組み込むとかいう話はどうなったんだろう
2019/02/20(水) 07:44:49.23ID:V5JGZApS
LOGOのグラフィック機能(タートル)は標準じゃないかな。
使ったことないから実際のところは知らんのだが。

ROM-BASICの頃は、たいがい何らかのグラフィックを使えたけど、
方言ばっかりで標準とは言い難かったね。
2019/02/20(水) 07:49:44.24ID:9tgV50SM
>>947
待てど海路の日和無し
2019/02/20(水) 10:49:58.31ID:wMUHduDL
wolf editorみたいなのはC++なんでしょうかね
2019/02/20(水) 19:42:52.26ID:Y2O+s3lJ
iteratorのメンバへのアクセスは、なぜドットではなくアローなのですか?
2019/02/20(水) 19:43:28.58ID:6H7Ao8nE
ポインタとの互換性を持たせるため
2019/02/20(水) 19:54:35.48ID:V5JGZApS
イテレータを ++ で進めたり、比較演算子で終わりの判断をするため、かな。
つまり「ポインタとの互換性」か。
シンタクスとかセマンティクスとか、専門用語が出る部分だね。

あと、ドット演算子はオーバーロードできないでしょ。
954デフォルトの名無しさん
垢版 |
2019/02/20(水) 19:59:56.78ID:vIxNp1pR
std::next()って出来たけど、これは配列のアドレスと互換性を持たせるためかな。
std::advance()のように参照を渡すのがダメだとすると、戻り値で何かを返す場合、イテレータを返せなくなるので、どういう設計にしたらいいのだろ。
955デフォルトの名無しさん
垢版 |
2019/02/20(水) 20:19:38.87ID:sr7oPl81
>>943
TclTkのcanvasが便利
956デフォルトの名無しさん
垢版 |
2019/02/20(水) 22:16:30.19ID:QUf2KVgt
#include <chrono>
namespace user {
using std::chrono::operator""ms;
};

上の場合msというユーザー定義リテラルをuser名前空間内に定義した扱いになる?
2019/02/20(水) 22:23:30.88ID:MRDgobfX
tclとか嫌だよ
2019/02/20(水) 22:52:29.12ID:ZG48jy4+
multimapである値に対応する全てのキーを列挙するのってどうやるの?
959デフォルトの名無しさん
垢版 |
2019/02/20(水) 23:07:04.44ID:QUf2KVgt
std::multimap<int, double> m;
m.insert({ 1, 2.0 });
m.insert({ 2, 2.0 });
m.insert({ 3, 2.0 });
m.insert({ 4, 2.0 });
m.insert({ 5, 2.0 });
//C++17
for (auto [key, value] : m){
std::cout << key << ": " << value << std::endl;
}
//C++11
for (auto&& p: m){
std::cout << p.first << ": " << p.second << std::endl;
}

上のコードで全要素参照できるから、valueかp.secondの値を比較すれば?
2019/02/20(水) 23:12:45.46ID:ZG48jy4+
>>959
毎回全要素にアクセスするべきなのですね
分かりました
2019/02/20(水) 23:25:09.65ID:QUf2KVgt
キーと値の設定間違えてない?
962デフォルトの名無しさん
垢版 |
2019/02/21(木) 08:23:36.74ID:9OrJvQb/
>>884
楽なC#を使わないでC++を使い続けるのは馬鹿にみえる。それと同じだろうな。
Cを使わないでASMを使い続けるのも同じ。
C++を使わないでCを使うのも同じ。
まあでもそれなりにターゲットによってはそれを使わざるを得ない場合がある。
マイコンの場合はASMが基本だがCでも書けるようになってきた。殆ど
の場合はCでも書ける。しかし条件付きではあるがC++でも書けるようになってきた。
ただスピードも遅いメモリも少ないマイコンでは便利だからといってもvectorやstringは
あまり使わない方がいい。使う場合でも節度をわきまえて使わないとね。
馬鹿なんて言葉も使うには節度がいる。でないと単なる馬鹿にしか見えない。
2019/02/21(木) 09:34:18.02ID:ckwx5Bag
マイコンをどう使うのかわからんが
定期的にリセットできるならともかく、
C++のようにオブジェクトの生成消滅繰り返すなんて言語道断だからな。
2019/02/21(木) 09:36:40.40ID:zicwhEg7
ものによる
2019/02/21(木) 10:55:49.95ID:AiQPvA+F
マウンティング用パワーワードが「ものによる」
コレ言う奴は大抵ばか
2019/02/21(木) 10:56:14.09ID:zicwhEg7
そうですか
2019/02/21(木) 12:41:59.00ID:Jz+qZwo4
C++がCの唯一の子孫というわけでもないし
2019/02/21(木) 13:09:43.80ID:WaMgOh2Z
C#はCとは全く異なる言語だと思うな。似ても似つかない。
969デフォルトの名無しさん
垢版 |
2019/02/21(木) 18:27:00.81ID:giZIG96n
>>968
快適なC++、それがJava。
2019/02/21(木) 18:32:29.46ID:2gpubT7a
単価半額以下の屑言語。
悔しかったらデバドラ書いて売ってこい
2019/02/21(木) 18:52:26.41ID:ZuxKbWfp
>>969
C#ならまだしも今更Javaはないわ
2019/02/21(木) 19:25:32.37ID:WaMgOh2Z
C#に一番近い言語は、VBかも知れない。
VBは馬鹿にされるので、名前がCに近くなって喜んでいる人がいる気はするが。
2019/02/21(木) 21:34:32.15ID:zicwhEg7
Cの影響を受けているという意味では現役の言語のほとんどが影響を受けているのでみんなCの子孫
2019/02/21(木) 21:49:22.41ID:w/7GK1kk
PostScript 「せやな」
APL「せやせや」
2019/02/21(木) 22:03:54.15ID:55eQHh2l
全部FORTRANの子孫で結論
2019/02/21(木) 23:43:22.72ID:ckwx5Bag
>>962
ちょっと違うんだよな
vectorやstringは普通にC++でプログラムできる環境なら使って問題ないだろ。。
でも、アルゴリズムを明示したいとかあるのよ。
DSPでアセンブラでコーディングさせる外注さんに手渡す仕様書としてCでコーディングして渡すとかね。
レジスタ を short r0,r1,r2;とかおいて、そのDSPの構造真似たりして。
C++のライブラリなんか使ってしまうと肝心なアルゴリズムが見えなくなってしまう。
2019/02/21(木) 23:49:54.40ID:ckwx5Bag
>>972
経緯からするとJavaから阻害されてC#立ち上げたけど、
たしかに書いてるとBasic臭がするよなぷんぷんと、VBはあんま詳しくないけど、
はじめて言語に触れたN88 Basic臭がツーンと脳裏のそこから蘇ったわ。思い出したくないヤーな感じ。
でもポインタ使えるのは確実にPost C
間接アドレッシング可能な言語はCの後継とみなしていいでしょ。
2019/02/21(木) 23:58:57.84ID:zicwhEg7
疑似言語で書けよ
レス数が950を超えています。1000を超えると書き込みができなくなります。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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