C++相談室 part131 [無断転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
2017/07/29(土) 11:28:28.97ID:o30VDF4g0
次スレを立てる時は本文の1行目に以下を追加して下さい
!extend:on:vvvvv:1000:512

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

前スレ
C++相談室 part130
http://mevius.2ch.net/test/read.cgi/tech/1490917669/

このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.100【環境依存OK】
http://echo.2ch.net/test/read.cgi/tech/1478440682/

■長いソースを貼るときはここへ。■
 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
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
2017/09/04(月) 10:42:45.81ID:EfQNUMljd
>>555
2017/09/04(月) 10:44:19.85ID:Ly8n+qhB0
違ったっけ。
staticってthisもってないんじゃなかった?
2017/09/04(月) 11:03:17.00ID:Ly8n+qhB0
https://ideone.com/qDEfdG
勘違いやったわ。ごめんなさい。
一個勉強になった。
2017/09/04(月) 11:51:31.64ID:ByDgWFhHM
メンバ変数をprotectedにする人ってなんなの?露出狂なの?
2017/09/04(月) 11:55:13.79ID:EfQNUMljd
そういう人が日本に一人二人いるかも知れないけど、気にするだけ損だよ
2017/09/04(月) 12:17:47.72ID:Ly8n+qhB0
継承しても触れるようにするためだけど。継承自体がほとんどない。
2017/09/04(月) 12:51:51.83ID:bUZLYHBF0
>>558
勘違いというのが勘違い
563デフォルトの名無しさん (ブーイモ MM1f-Gtnu)
垢版 |
2017/09/04(月) 12:57:07.34ID:KIEUzmnzM
クラス内に定義されたstatic関数は、そのクラスのオブジェクトが存在しなくても使える関数ってのが本来の意味。
動的なオブジェクト状態には依存せず、静的なクラス構造のみに依存するからstaticね。

対してfriendは、自分をさらけ出す人を指定するめのもの。

stream のから呼び出されるオペレーターを定義する時には、既に完成している stream (だけ)に対して自オペレーターをさらけ出してしまうのがいろいろな意味で最も効率的。

以上から、friend関数は、静的ポリモーフィズムを関数レベルでお手軽に実現したいときに使うと思っている。
2017/09/04(月) 13:03:46.35ID:bUZLYHBF0
表層的に言うと
staticはグローバル関数をクラススコープにして、かつアクセス制御も効くようにしたもの
friendは>>531の通り
ただそれだけのこと
2017/09/04(月) 13:05:20.90ID:ByDgWFhHM
>>561
なんで素っ裸でコートきてんの?露出狂なの?って聞かれて
コート脱いだらちんこ見えるようにする為だよって答えてんのと同じだぞ

まったく…露出狂は社会に出ちゃいけない存在なんだから、もう二度とプログラミングするんじゃないぞ
2017/09/04(月) 13:05:58.55ID:ws3TkDjE0
仕様がグダグダですな。
2017/09/04(月) 15:31:51.46ID:xMNR7APW0
>>565
うまい事言うなあ
friendは「なんで俺にだけ素っ裸見せんの?露出狂なの?」と聞かれて
「だってお前友達じゃん。だからお前にだけ俺の裸見せてやんよ」と言ってるわけだしな」
568デフォルトの名無しさん (ワッチョイ cf1c-PLFS)
垢版 |
2017/09/04(月) 16:26:06.19ID:pd3pCmCq0
あれだろ
日本語のガールフレンドと
英語のgirl friendじゃ意味が違うというアレ
2017/09/04(月) 16:40:24.27ID:Ly8n+qhB0
>>565
あんたに決められる筋合いはねー。災いあれ。
2017/09/04(月) 16:58:13.05ID:EfQNUMljd
friendはクラスの役割を適当に分担しながら実装の隠蔽を図るのにはまあ妥当な仕組みだろうな
571デフォルトの名無しさん (ワッチョイ cf1c-PLFS)
垢版 |
2017/09/04(月) 17:07:07.44ID:pd3pCmCq0
継承をほとんど使わないってどんな分野だろう
俺んとこではポートを叩くときのプロトコルが
似ているようで少しずつ違うなんての普通にあるし
2017/09/04(月) 17:13:32.82ID:MR3pz7f3d
複数のクラスのfriendが可能
staticは1個だけ
2017/09/04(月) 17:15:33.44ID:EfQNUMljd
ダックタイピングじゃね?
2017/09/04(月) 18:52:24.45ID:s+p5aXGeM
>>567
親しき仲にも礼儀あり。
アクセサぐらい用意するよね。
2017/09/04(月) 19:06:46.17ID:CIc3tQw70
>>565
>もう二度とプログラミングするんじゃないぞ
わかりました,もう止めます‥
2017/09/04(月) 19:28:25.71ID:EfQNUMljd
C++のfriendが現実世界の友達と違うのは、最初に決めたやつ以外にfriendを増やすことは全く好ましくない、
という点だろう
2017/09/04(月) 19:58:54.95ID:ByDgWFhHM
>>569
publicにしてあるほうが、まだかわいげがあるよ
もう、これからはすべてpublicにしなさい
2017/09/04(月) 23:34:49.89ID:jzRaTvEE0
friendじゃなくfamilyが良かった気がする
579デフォルトの名無しさん (ワッチョイ cf1c-PLFS)
垢版 |
2017/09/04(月) 23:45:07.31ID:pd3pCmCq0
そうだね、ニュアンス的にはそっちだ
2017/09/05(火) 10:50:00.46ID:D99g/mXF0
>>578
#define family friend
で行ける?
2017/09/05(火) 12:19:42.29ID:FAzSlJ+ld
#define amigo friend
2017/09/05(火) 12:30:05.08ID:eN2J5TsS0
#define brother friend
2017/09/05(火) 13:50:03.50ID:MHv2cVQ40
printf("We are the World."); ←わかる
cout << "We are the World" <<endl; ←わからない

printfは「関数」だからわかります。
coutの<<はシフト?よくわからないです。
なぜC++はこんな文字の出力のさせ方にしたんでしょうか?関数じゃダメだったんですか?
2017/09/05(火) 13:54:25.72ID:5+GcycqS0
方法が増えただけ
以前どおり関数でも大丈夫だよ
2017/09/05(火) 14:03:50.06ID:CTfci4Vl0
>>583
<<は演算子オーバーロードだけどcoutなんて使う必要ないよprintfでOK
586デフォルトの名無しさん (ワッチョイ cf1c-PLFS)
垢版 |
2017/09/05(火) 14:04:00.15ID:5KjI8r3d0
>>583
それはまさにC++の作者(以下、禿)が
彼の著書でアピールしていたことだ
coutとは何か? <<とは何か?
記号と意味はどこでどのように関連付いているのか
意味は関数で表記することにしよう
<<の意味を表記する関数の関数名をoperator<<としよう
プログラム言語の命令とデータは動詞と目的語だ
動詞は関数と1対1対応でよいが目的語の定義は動詞の蓄積だ
・・・てな具合
2017/09/05(火) 17:31:12.14ID:LcvSXQg0d
>>583
シフト演算子を全く別の意味に使う
ひどい設計だと思う
2017/09/05(火) 18:16:33.48ID:FAzSlJ+ld
それほどでもない
2017/09/05(火) 18:16:37.41ID:deDONG/TM
cout.<<("We are the World"). <<(endl);
があれば少しはマシだったかね。
2017/09/05(火) 18:45:41.20ID:fgaIXgJY0
>>583
演算子のオーバーロードのよいお題ということで無理矢理ねじこんだんじゃないかな
591デフォルトの名無しさん (ワッチョイ c397-Pjaj)
垢版 |
2017/09/05(火) 18:48:59.76ID:Ol0Fklqi0
using namespace std;
double value = 1.23;
cout << "value = " << value << endl;
592デフォルトの名無しさん (ワッチョイ 33e4-73wU)
垢版 |
2017/09/05(火) 19:06:29.40ID:/x4Q9Nfh0
>>587
お約束を破っているが流し込んでる感が出ているので芸術点高い
2017/09/05(火) 19:25:16.50ID:FAzSlJ+ld
+-*/と違って<< がシフト演算子なんて決まってないから「本来と違う」なんて意味なさない
2017/09/05(火) 19:34:59.61ID:TUBHCjnbM
vectorオブジェクトが破棄されるとき、要素の解放順は要素順であることは保証されていますか?
2017/09/05(火) 19:39:42.84ID:DJL8TJyoM
>>594
されてない
2017/09/05(火) 19:39:47.76ID:LcvSXQg0d
>>593
いや決まってる
ライブラリを抜きにした純粋な言語ではシフトの意味しかない
元の言語のC言語も同じ

* の方がいろいろな意味で使われている
2017/09/05(火) 19:42:00.05ID:FAzSlJ+ld
>>596
べつにc/c++の話じゃなく、一般に<<をIOの意味で使ってもなんとも思わんでしょ
+-*/はさすがに刷り込まれている
2017/09/05(火) 20:04:52.50ID:Xvi9WQb30
数学の演算子とプログラム言語の演算子のことじゃないかな。

+ - は数学とプログラム言語で一致
* / は数学と違うけど文字セットに乗除の記号がないし妥当な代用
<< をシフトに使うのはC系プログラム言語の独特の使い方
だったら << が出力になってもええじゃないか、という話。
2017/09/05(火) 20:10:04.82ID:CG6xGPaC0
向きは違うけどbashみたいなイメージだと思ってた
2017/09/05(火) 20:10:32.88ID:gdvLxkwI0
お前がそう思うんならそうなんだろうお前ん中ではな
2017/09/05(火) 20:11:08.83ID:HWiXORhGd
数学では、比較してずっと小さい、ずっと大きいという意味で<<、>>を使うことがあるみたいだが。
2017/09/05(火) 20:11:12.82ID:TUBHCjnbM
>>595
ありがとうございます
保証するにはどうすればいいですか?
ググってstackoverflowとか見たんですが、できないという人もいたり
clear()を使えという人もいてよくわかりません
603デフォルトの名無しさん (ワッチョイ cf1c-PLFS)
垢版 |
2017/09/05(火) 20:17:36.79ID:5KjI8r3d0
禿が言い出した<<と
おまいらが言い出す<<では
悪いが社会への影響度がまるで違う
大勢のPGが<<はI/Oだと素直に従うかどうかでだ
新しい言語に旧来の言語と似た記号が出てきたからって
同じ意味でなければならないという法はどこにもない
2017/09/05(火) 20:19:03.84ID:D99g/mXF0
>>602
なんで順番が気になるんだ?
2017/09/05(火) 20:21:01.51ID:eN2J5TsS0
ローテート命令が演算子化されてないのは何故なんだぜ?
2017/09/05(火) 20:58:17.14ID:TUBHCjnbM
自己解決しました

>>604
必要な場面がありまして
2017/09/05(火) 21:12:58.72ID:Eko3GwfuM
printfをモダンにアレンジして新規格作ればいいのに。
608デフォルトの名無しさん (ワッチョイ cf1c-PLFS)
垢版 |
2017/09/05(火) 21:50:59.32ID:5KjI8r3d0
>>605
それな
俺も時々欲しくなるんだけど
キャリーを含む/含まないとかCHAR_BITの違いとかで
移植性が確保しにくそうだよな
記号を何にするかなんて後から決めりゃいいことだ
2017/09/05(火) 22:29:35.14ID:NIuXE25q0
>>605
ローテートなんて頻繁に使うものじゃないから

ビットが立ってる数を数えるとか、
ビットが立ってる位置を調べるとか、
バイト単位の並び替えとか、
小数から整数へ四捨五入とか、
他にいくらでも足したいものはある
2017/09/05(火) 22:54:34.26ID:DO26xGrR0
誰がこんなクソ言語つくったんだよ
作者はたぶんバチが当たって禿げてるはず
2017/09/05(火) 23:01:40.29ID:nPfvfHCk0
だいたい最初にアスタリスクを乗算演算子にした奴は誰だよ。
612デフォルトの名無しさん (ワッチョイ cf1c-PLFS)
垢版 |
2017/09/05(火) 23:58:08.13ID:5KjI8r3d0
ジョンバッカスだろ
2017/09/05(火) 23:58:19.96ID:qAaUk7C50
operator:=とかoperator!?とか定義できるようにしてくれたら
お前らが度肝を抜くような使い方して見せるのに、残念でならない。
614デフォルトの名無しさん (ワッチョイ cf1c-PLFS)
垢版 |
2017/09/06(水) 00:21:11.51ID:eLdBXtqw0
operator?:ならマジで提案してみそ
あわよくば大手柄だぞ
2017/09/06(水) 00:25:00.50ID:VYubvLfh0
>>613
コンパイルエラーになろうが、ソース書くだけなら現状でもできるだろうから、度肝を抜いてくださいな。
616デフォルトの名無しさん (ワッチョイ cf1c-PLFS)
垢版 |
2017/09/06(水) 00:47:00.85ID:eLdBXtqw0
613なりのcxxfrontでも作ればいい
2017/09/06(水) 06:39:00.29ID:lz1Lh31S0
>>611
あなたならどれにする?
2017/09/06(水) 06:40:33.11ID:lz1Lh31S0
同じかどうかの比較が = ではないのが欠陥
2017/09/06(水) 07:17:47.41ID:xbyXQy+0M
>>615
なんか面白いこと言おうとしてるの?
620デフォルトの名無しさん (ワッチョイ cf1c-PLFS)
垢版 |
2017/09/06(水) 08:45:25.92ID:6GspjXt70
>>618
BASICのように=の意味が文脈で変わるべきだと?
2017/09/06(水) 08:49:59.58ID:/Hhi3W4sd
いや、代入を別の記号に
それこそ := でも
2017/09/06(水) 08:50:33.96ID:ZK3Q9QYA0
いやっすいやっす!代入に2タイプも使うのいやっす!
2017/09/06(水) 08:51:14.26ID:DE0YQ4Kk0
数学の方を現代に合わせて変えるべき
2017/09/06(水) 08:57:40.90ID:zxwumig7M
>>623
勝手に変えたらどう?
数学はコンパイル不要だから、最初に定義さえすればお前の使いたい記号を好きなだけ使えるよ
625デフォルトの名無しさん (ワッチョイ 33a6-SDEO)
垢版 |
2017/09/06(水) 09:44:12.68ID:f82uiC9X0
自民党の恐怖の言論弾圧が迫る! 

売国安倍は憲法改正で国民主権と基本的人権
を奪うつもりだ。 ← 民主主義の崩壊

http://www.data-max.co.jp/280113_ymh_02/

↑ マスコミは 9条しか報道しないが 自民案
の真の恐さは21条など言論の自由を奪うこと

自民案が通ると 政府批判しただけで逮捕されるぞ!

https://www.youtube.com/watch?v=h9x2n5CKhn8

上のビデオで 自民党は 日本人に基本的人権
は必要ないと 異常なことを平気で言う。

http://xn--nyqy26a13k.jp/archives/31687

↑ 都民ファーストも安倍と同じく 憲法改正で 人権
無視の大日本帝国憲法に戻すつもりだから
絶対に投票してはだめだ。 民主主義が崩壊する

http://blog.goo.ne.jp/ngc2497/e/8899f65988fe0f35496934dc972e2489

↑ ネトウヨ= 安倍サポーター工作員はネットで国民を騙す。

https://dot.asahi.com/aera/2016071100108.html?page=3
http://blog.goo.ne.jp/kimito39/e/c0dd73d58121b6446cf4165c96ebb674

↑ 安倍自民を操るカルト右翼「日本会議」は国民主権否定。
国民投票や選挙では自民党、維新、小池新党に絶対に入れるな。
626デフォルトの名無しさん (ワッチョイ c397-Pjaj)
垢版 |
2017/09/06(水) 11:33:15.11ID:Mqa6x7N10
2003年8月の第1回から2007年3月の第6回までいずれも中国北京で計9次の会合が行なわれた
話し合いで解決しなかった
原爆、弾道ミサイルの開発にカネ、時間を与えてしまった
軍事力でつぶすしかないのに、まだこんなこといってる


         ,,-―--、
        |:::::::::::::;;;ノ  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
        |::::::::::( 」 < 対話で解決しよう
        ノノノ ヽ_l   \______________
       ,,-┴―┴- 、    ∩_
     /,|┌-[]─┐| \  (  ノ
      / ヽ| |  バ  | '、/\ / /
     / `./| |  カ  |  |\   /
     \ ヽ| lゝ    |  |  \__/
     \ |  ̄ ̄ ̄   |
      ⊂|______|
       |l_l i l_l |
       |   ┬   
2017/09/06(水) 12:26:18.39ID:8RU3q9uiM
>>623
数学は、最初に定義さえすれば自由にしていいんだよ。
628デフォルトの名無しさん (スプッッ Sd1f-TajK)
垢版 |
2017/09/06(水) 12:36:56.86ID:/66SkMcqd
話が成り立たないアホばっかりだな
2017/09/06(水) 15:29:10.13ID:fXx7GStM0
プログラミング勉強し始めた初心者ですが
手詰まりになったので質問させてください

ttp://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ALDS1_3_C&lang=jp

この問題をやっていますが、以下のコードで「Time Limit Exceeded」となってしまいます
他の正解者のコード見てもやってることは同じな気がするのですが
なにがいけないのでしょうか?

C++14コード
ttp://codepad.org/2Yxb33Ab
2017/09/06(水) 15:33:28.13ID:I6k6pGLy0
多分出力のコードが間違ってる。
2017/09/06(水) 15:40:37.11ID:fXx7GStM0
追記です

Case#8までは「Accepted」でOKなんですが
Case#9が「Time Limit Exceeded」でした

Case#9は入力が2000000行もあるっぽいです

でも他の人とやってること自体は同じなんだから
このコードでできるはずと思い込んでしまって
何が悪いのかさっぱり検討つきません。。。
2017/09/06(水) 15:54:34.75ID:I6k6pGLy0
2個出力してみ?
2017/09/06(水) 15:55:29.34ID:I6k6pGLy0
あれ?勘違いだ。
2017/09/06(水) 15:59:43.73ID:I6k6pGLy0
Listそのものがそんなに早くないとかかなぁ。
デリートはO(1)で終わるけど、ポインタの付け替えとかあるから、雑に遅いカモね。
最近のコンピュータだと配列の方が早かったりする。
2017/09/06(水) 16:38:37.77ID:I6k6pGLy0
もしかしたら、sstringしてるのが重いかもなぁ。
cinで取れるのに何でssteamしてるのかよくわからん。
2017/09/06(水) 17:25:42.27ID:I6k6pGLy0
http://judge.u-aizu.ac.jp/onlinejudge/review.jsp?rid=2522632
これで通った。
2017/09/06(水) 17:28:16.47ID:I6k6pGLy0
http://judge.u-aizu.ac.jp/onlinejudge/review.jsp?rid=2522643
すまんこれでは通らなかった。
2017/09/06(水) 17:33:31.55ID:I6k6pGLy0
http://judge.u-aizu.ac.jp/onlinejudge/review.jsp?rid=2522664#1
これは通った。
2017/09/06(水) 17:37:32.00ID:I6k6pGLy0
適当なこと言ってすまんかった。
2017/09/06(水) 18:55:53.01ID:pROvgKjd0
んぁ?
2017/09/06(水) 19:15:05.29ID:fXx7GStM0
>>630
>>632-639
ありがとうございます!

まさに>>635だったみたいです
1行ごとに入力を読み込みたいからsstream使ってたのですが
そのせいでwhileループで毎回sstreamとstringの変数を定義しているせいでした

cinとstringだけで入力を読み込むようにして
変数の定義をループの外にしたらようやく自分のコードで通りました

sstream使わなくてもstring変数の定義をループ内に書いたままにしてたら
ずっと通らなくてそれで何時間も四苦八苦してようやくすっきりしました

変数の定義って思いの外処理時間がかかるんだなあとしみじみ実感しました

わざわざコーディングまでしてくださってありがとうございました
642デフォルトの名無しさん (ワッチョイ cf1c-PLFS)
垢版 |
2017/09/06(水) 21:33:01.28ID:6GspjXt70
> 変数の定義って思いの外処理時間がかかるんだなあとしみじみ実感しました

ものによる
テキトーこくな
2017/09/06(水) 21:57:51.28ID:P+VnvHZA0
>>642
> ものによる
string だろ
話の流れも読めないのか?

> テキトーこくな
実際にやってるだろうに何を言ってるんだよ
いちゃもんつけたいだけか?
2017/09/06(水) 22:53:02.57ID:OHCEwHay0
変数の定義って処理なのか?

stringが遅いのはどの言語でも同じ。ヒープに確保してるから。
Cの特権は固定長ならスタックに文字配列を確保できること。
2017/09/06(水) 23:16:43.16ID:LeFS08p/0
>>644
COBOLとかFORTRANヒープの概念があるとは
2017/09/07(木) 00:17:30.43ID:E8QDgFBm0
デフォルトだとcinがstdioと同期取ってやたら遅かったりもする罠
2017/09/07(木) 02:37:57.68ID:t89SIQGa0
コンストラクタがやけに重いクラスとかあるんだよ、標準でも。
2017/09/07(木) 06:02:40.83ID:sowmLjiv0
C++のstream関連は全て糞
operator<<()の多重定義で自作クラスのフォーマット文字列化(stringizing)ができる、というのがちょっと嬉しかったけど
しょせんコードの見かけだけの話やし、実行速度は速いし改造もしにくい、
(printf()ならvprintf()を使って関数1個書けば良いところをstd::streambufの派生クラスを作る羽目に、、
 行単位の排他とかの作り方を比べたらワカル

だいたい一般に1つのクラスに対して一般に
 (1) 人間が読むためのフォーマット文字列化
 (2) ストレージか何かへのシリアライズ
 (3) ストレージか何かからのデシリアライズ
の3つの要求が生じるのに対してoperator<<()とoperator>>()の多重定義の2個では数が足りない
だったら上記3メソッドのインターフェースを全部Cのstdioベースで実装して済ませるわ;

とにかくC++の中にあってstreamはパフォーマンスよりもコードの見かけに拘ってみました感が異端
2017/09/07(木) 06:46:38.33ID:9W4DbE9gM
>>644
> 変数の定義って処理なのか?
コンストラクタって知ってるか?

> stringが遅いのはどの言語でも同じ。ヒープに確保してるから。
そもそもstring型はすべての言語にないし文字列型と言う意味ならFORTRAN77のように固定領域にとる言語もある

>>645
モダンなバージョンなら普通にあるでしょ
Fortran ⇒ Allocate 文
Cobol もオブジェクト指向になってるぐらいだからあると思う
2017/09/07(木) 07:52:40.01ID:E5YdMpMh0
相談室ということで
C++でディープラーニングのライブラリといったらTensor Flowとtiny dnn以外にあります?
2017/09/07(木) 08:09:04.47ID:6e0QaN8o0
>>650
ソニーから nnabla だったかな
652デフォルトの名無しさん (ワッチョイ 17e4-9lW3)
垢版 |
2017/09/07(木) 08:40:05.33ID:BwtgUJJf0
ライブラリなど不要
2017/09/07(木) 12:48:57.45ID:ccNhwHbvd
学習など不要
654デフォルトの名無しさん (ブーイモ MMff-zX58)
垢版 |
2017/09/07(木) 12:51:16.16ID:m/W0Vwq0M
>>648
おちつけ。

> 実行速度は速いし改造もしにくい、

> だいたい一般に1つのクラスに対して一般に
2017/09/07(木) 15:45:42.89ID:lWzPhy/F0
>>649
つまりインスタンス生成を「変数の定義」って言ってるのか。分りにくいな。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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