X



C++相談室 part131 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん 転載ダメ©2ch.net (ワッチョイ 3b96-ov1m)
垢版 |
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
0641デフォルトの名無しさん (ワッチョイ 6f7b-DEiO)
垢版 |
2017/09/06(水) 19:15:05.29ID:fXx7GStM0
>>630
>>632-639
ありがとうございます!

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

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

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

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

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

ものによる
テキトーこくな
0648デフォルトの名無しさん (ワッチョイ 9ac5-FXPZ)
垢版 |
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はパフォーマンスよりもコードの見かけに拘ってみました感が異端
0649デフォルトの名無しさん (ドコグロ MM92-Qch9)
垢版 |
2017/09/07(木) 06:46:38.33ID:9W4DbE9gM
>>644
> 変数の定義って処理なのか?
コンストラクタって知ってるか?

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

>>645
モダンなバージョンなら普通にあるでしょ
Fortran ⇒ Allocate 文
Cobol もオブジェクト指向になってるぐらいだからあると思う
0652デフォルトの名無しさん (ワッチョイ 17e4-9lW3)
垢版 |
2017/09/07(木) 08:40:05.33ID:BwtgUJJf0
ライブラリなど不要
0654デフォルトの名無しさん (ブーイモ MMff-zX58)
垢版 |
2017/09/07(木) 12:51:16.16ID:m/W0Vwq0M
>>648
おちつけ。

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

> だいたい一般に1つのクラスに対して一般に
0660デフォルトの名無しさん (ブーイモ MM26-7FiT)
垢版 |
2017/09/08(金) 21:05:50.39ID:VlEBq8a5M
>>648
モダンな言語の多くはprintfライクだし、javaも結局追加された。
printfライクのほうが効率的なことは経験的にわかってるのだからstreamにイマドキのformat関数を追加してくれればいいのに。
0669デフォルトの名無しさん (ワッチョイ 2309-g9be)
垢版 |
2017/09/09(土) 21:07:39.82ID:FtyOtgZ20
なんか、VCもGCCも半分くらいずつ間違えてる予感。
Setだけだとストレージがないからなんかバグの予感するし。
ストレージ持たせようとすると修飾が間違ってるって言われてる感じがする。
なんだこれ。
0674デフォルトの名無しさん (ワッチョイ 2309-g9be)
垢版 |
2017/09/10(日) 00:32:56.15ID:8Jhjgi9Q0
>>673
およ、折衷案できそうか?
自分はVC動けばいいんだけど、
コード公開するときに動かないと間抜けっぽいから良対応しようと一応やってる。
visualデバッガが便利すぎてVCやめるの大変。
0679デフォルトの名無しさん (ワッチョイ 2309-g9be)
垢版 |
2017/09/10(日) 07:35:26.76ID:8Jhjgi9Q0
折衷案色々あるなぁ、感心する。

>>676
別に個人のコードでどこかに迷惑かけてるわけじゃないし、この程度のコードも読めない方が問題。
それに高慢なお方は最初から相手にしてない。マウントしてほしくてやってるんじゃないんだよ。
0686デフォルトの名無しさん (ワッチョイ e311-xkdj)
垢版 |
2017/09/12(火) 09:35:13.31ID:M9yu8us30
何故そういうコードになっているかを理解せずに猿真似して意味があるかどうかはわからんけど
autoで受けるとおかしなことになるのは、キャストや代入で望む結果を得る方法(expression templateなど)全部そう
暗黙のキャストでなく関数呼び出しを強制すればautoでも大丈夫だけど
0687デフォルトの名無しさん (ワッチョイ 0e1c-HB/9)
垢版 |
2017/09/12(火) 10:11:33.04ID:CGKPtYms0
> 馬鹿に触らせるなテンプレートって昔から言うしな。

自分が触りたくないのはわかったから
0691はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 5a15-xkdj)
垢版 |
2017/09/12(火) 22:54:11.94ID:cQiNwo4o0
>>688
あ、なるほど、状況を勘違いしてた。

C++17 からは RVO が使える場合は常に RVO で処理する (従来は「してもよい」というオプショナルな動作) ことと、
そのときはコピー (ムーブ) コンストラクタが無くても良いというルールが念頭にあったのだけれど、
この場合は RVO は関係なかった。 スマソ
0695デフォルトの名無しさん (ワッチョイ ab1c-/PGn)
垢版 |
2017/09/14(木) 22:59:53.42ID:AfykdPhZ0
いい流れだ
0696デフォルトの名無しさん (ワッチョイ c1a6-PzL5)
垢版 |
2017/09/15(金) 15:29:03.53ID:zUPCfesd0
"clacla.h"
class Clacla {
void func1();
void func2();
void func3();
};

"clacla.cpp" //実装部
クラスClacla くくり { <-ここ
void func1() { printf( "1" ); }
void func2() { printf( "2" ); }
void func3() { printf( "3" ); }
};
のように関数の実装時にClacla::を省略する方法ってあるでしょうか?
0697はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 1315-SGtB)
垢版 |
2017/09/15(金) 15:33:45.29ID:leF15WXE0
>>694
最適化が有効なら C++17 であろうがなかろうが clang なら RVO が効くはずだけど、 u.p の値は null になっちゃうな。
RVO がどうこうじゃなくて this の挙動に関するなんか変なルールが適用されてるとかかも?
0699696 (ワッチョイ c1a6-PzL5)
垢版 |
2017/09/15(金) 16:35:44.21ID:zUPCfesd0
>698
やっぱり無いですよね。
ありがとう。
0702デフォルトの名無しさん (ワッチョイ 59e4-HfMd)
垢版 |
2017/09/15(金) 21:27:27.94ID:5X/IRSU20
右辺値参照の暗黙適用は例外の処理で不都合があるよね
元の値をTmpにコピっといて例外発生で書き戻すにしても
関数A処理内で呼び出した関数Bからの例外をAのユーザコードでは完スルーなのに
コンパイラコードではコッソリ捕まえて書き戻す必要が有る
そんときロックでも掛かってたらどーすんのよと

呼び出し繋がりを横断的に管理要するとんでもないコスト増なんじゃね?
0703デフォルトの名無しさん (ワッチョイ 93c5-+NpA)
垢版 |
2017/09/15(金) 21:36:23.16ID:xDlOGQNS0
Tmpのアドレスを関数B(およびその先の関数)が知る可能性がコンパイラから見て排除できない限り
関数Aから関数Bを呼び出す前にTmpは元の値の完コピーにならざるおえないのでは…
(そうでなければ副作用のある関数を安全にコンパイルできない&安心して書けない

さらにロックに入るときと出るときは上と同じ理由で結果的に完コピーになる上に、
まともなOSならメモリバリアまで手当てしてくれるんじゃ…
0704デフォルトの名無しさん (ワッチョイ 93c5-+NpA)
垢版 |
2017/09/15(金) 21:42:30.18ID:xDlOGQNS0
つまり右辺値参照の暗黙適用が効力を持つのはスゲー広範にインライン展開されるような場合
(当然いかなるOSのAPIやシステムコール類の呼び出しも含まない
「だけ」
であって、通常のプログラマーにはあんまありがたみがはっきりしない仕様

※ 個人の感想です
0710デフォルトの名無しさん (スップ Sdf3-1/aj)
垢版 |
2017/09/18(月) 10:24:11.11ID:lVEmBRA9d
tcp/ipの勉強のためにC++で何か作れば勉強になるかな?って思ってるのだけど
こういうものを作れば勉強になるよってものある??
パケットの動きだったり階層の考え方だったりを学びたい
0711デフォルトの名無しさん (ドコグロ MM9d-BsvU)
垢版 |
2017/09/18(月) 10:40:29.87ID:U79GLBVsM
>>710
TCP/IPの勉強ならWireSharkの使い方覚えた方が早いかも
その上のプロトコルレベルなら勉強したいプロトコルの簡単なクライアントから始めればいいと思う
ちなみに俺はNetNewsに流れるむふふ画像を取り込みたかったのでnntpのクライアントをperlで組んで勉強した
0712デフォルトの名無しさん (スップ Sdf3-1/aj)
垢版 |
2017/09/18(月) 11:05:46.29ID:lVEmBRA9d
>>711
プロトコルレベルの勉強をしたい
そうなるとhttpサーバを立てることになるのかな?
そういう場合は簡単なhttpサーバとクライアントを作成すれば良いのかね?
それで通信しあってwiresharkで中身を見てtcpだったりhttpだったりを見るべき?
0713デフォルトの名無しさん (ワッチョイ 939f-0QkJ)
垢版 |
2017/09/18(月) 11:39:07.40ID:9mrqYCJU0
おれは一昔前、深夜ボリュームでかくする姉貴のPCが煩くてTCP通信でマスターボリューム弄るサーバー&クライアント作ってコッソリ仕込んでコントロールしてたな。
まぁ、やってやるぞというモチベーションは大事だとおもうよ。
ガンバってね。
0715デフォルトの名無しさん (スップ Sdf3-1/aj)
垢版 |
2017/09/18(月) 11:43:19.16ID:lVEmBRA9d
>>713
姉貴のパソコンにサーバプログラム常駐させる
そいつがポートXXXで待ち構える

同じ家なのでネットワーク帯は同じで
自分のpcからポートXXXにメッセージ送信する

姉貴のサーバプログラムが受け取ってボリューム下げる処理をする

こんなことしてたってことかね?
0716デフォルトの名無しさん (ワッチョイ 939f-0QkJ)
垢版 |
2017/09/18(月) 12:01:08.52ID:9mrqYCJU0
>>715
まぁ大体そんな感じなんだが、急に音量小さくすると即効でばれるので、まず、姉貴PCの音量を取得するのが第一だな。
そこからスライダーでボリューム下げていった値をサーバーに順次送信しサーバープログラムがその値に応じて音量を徐々にフェードコントロールするといった具合だな。
0729デフォルトの名無しさん (スップ Sdf3-1/aj)
垢版 |
2017/09/19(火) 10:23:20.37ID:mIuFgC1Fd
初歩の初歩の初歩の質問なんだけど
あるPCにポートXXを口とするサーバソフトを同時に二つ立てることはできないよね?
1つめはXXを使うとしてその後にたてられた2つめはどうなる?
(スレチっぽくなってますがよろしくです...)
0730デフォルトの名無しさん (ワッチョイ 2be3-SGtB)
垢版 |
2017/09/19(火) 10:38:02.75ID:S6233VLa0
出来ます
サーバー側はリクエストに応じて複数のプロセスを起動し、
同じポート番号を使って複数のプロセスが受け答えします
各プロセスはそれぞれで生成したソケットを使ってクライアントとやり取りします
0731デフォルトの名無しさん (スップ Sdf3-1/aj)
垢版 |
2017/09/19(火) 10:57:49.02ID:mIuFgC1Fd
>>730
それってプログラム内でforkして子プロセスを作る場合の話です?
サーバソフトAとサーバソフトBの両立ができたとすると
ポートXX使用します!ってのはどこでどちらを使うと判断するのでしょうか...
■ このスレッドは過去ログ倉庫に格納されています

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