[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 11/17 15:19 / Filesize : 258 KB / Number-of Response : 1016
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C++相談室 part119



1 名前:デフォルトの名無しさん [2015/08/31(月) 18:19:04.13 ID:NE3NvROE.net]
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレに
お願いします。

前スレ
C++相談室 part118
peace.2ch.net/test/read.cgi/tech/1435970316/

このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.97【環境依存OK】 [転載禁止]©2ch.net
peace.2ch.net/test/read.cgi/tech/1439849418/

次期規格C++1zはこちら
C++14/C++1z 20
peace.2ch.net/test/read.cgi/tech/1410382924/

■長いソースを貼るときはここへ。■
 codepad.org/
 ideone.com/

862 名前:デフォルトの名無しさん [2015/10/07(水) 19:11:12.75 ID:Qd1lXfpw.net]
gccではエラーにならないと言っているだろ

863 名前:デフォルトの名無しさん [2015/10/07(水) 20:31:15.75 ID:lwnukUe8.net]
なるから言ってるんですアホなんですか

864 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 21:27:09.31 ID:BAz1ThzD.net]
>>849
少なくともお前が糞なことは確か

865 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 21:40:43.83 ID:3DMfLJBU.net]
標準C++ではエラーになるのが正しい
VC++でエラーにならないなら標準非準拠か独自拡張

クラス型のconstオブジェクトをデフォルト初期化(で定義)するときは
そのクラスにはユーザ定義のデフォルトコンストラクタがなければならない

>>847がエラーにならないのは静的記憶期間のためゼロ初期化されて上記には該当しないから

866 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 23:01:49.00 ID:JsRvQDZJ.net]
>>854
>ゼロ初期化されて上記には該当しないから

フーン、それはISO/IEC 14882:2014のどこに書いてあるのですか?

867 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 23:06:57.63 ID:pNycS8F+.net]
パーサー書いたことある人いますか
一応作ったけどすごい難しいというか面倒というか
どういったアルゴリズムがいいのか馬鹿だからわからん

868 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 23:22:04.98 ID:ftNCaisU.net]
BoostにC++パーサーがあったような

869 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 23:23:53.25 ID:Kru1mWVv.net]
boost::spiritでおk

870 名前:デフォルトの名無しさん [2015/10/07(水) 23:24:01.37 ID:gQOBln3k.net]
(1)文字単位の検査 →エラー文字を弾く
(2)文字を結合してトークンを作る →エラートークンを弾く、コメントなど延期トークンをまとめる
(3)トークンを結合して再帰的ツリーを作る →構造の欠損を弾く
(0)メタな表記がある場合、そのメタ表記についてまた(1)から逆再帰的に繰り返す
できたツリーを意味解析に渡す



871 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 23:25:58.96 ID:0v/h/3vS.net]
>>856
オープンソースのパーサー腐るほどあるだろそれいっぱい読め

872 名前:デフォルトの名無しさん [2015/10/08(木) 00:13:00.11 ID:p7bZHcv9.net]
>>856
あります。
・(E)BNF
・HTTP
・Sentence segmentation
等書きました。

873 名前:デフォルトの名無しさん mailto:sage [2015/10/08(木) 04:32:10.77 ID:FlZYA0H2.net]
>>856
LL(5)位がおすすめ

874 名前:デフォルトの名無しさん mailto:sage [2015/10/08(木) 06:37:28.57 ID:ETVAEvki.net]
>>862
なんでLL(5)んああんだよ?
5記号先読みするパーサなんて一般的じゃないだろJK、

ていうかLL(1)(再帰下降構文解析の一番簡単なやつ)とかは
素人でも勝手に再発見するがそこで理解が止まってしまうと
数式のパーサで死ぬので(そのまま作ると2項演算子が全部右結合になってしまう
、やpっぱまずわ正規言語のパーサあたりからから作ってみて感触をつかんだるのちに
ボトムアップパーサの理解に進むべし、

875 名前:デフォルトの名無しさん [2015/10/08(木) 11:19:30.61 ID:GTAWjzct.net]
LL(1)はLL(1)文法になるように人工的に作り出した言語にしかほとんどつかえないからな
LL(5)位なら適当にある言語ならほとんど解析できるだろ

876 名前:デフォルトの名無しさん [2015/10/08(木) 12:23:57.11 ID:GTAWjzct.net]
左結合にしたければカッコつければいいだけだし
右結合する演算子なんて普通無いしな

877 名前:デフォルトの名無しさん [2015/10/08(木) 12:25:42.38 ID:PEkcocuS.net]
バックトラックはセキュリティの問題をはらみやすいので避けたほうが良い。

878 名前:デフォルトの名無しさん mailto:sage [2015/10/08(木) 12:28:11.85 ID:GTAWjzct.net]
また例の再帰関数大嫌い君か

879 名前:デフォルトの名無しさん [2015/10/08(木) 12:33:40.58 ID:PEkcocuS.net]
好き嫌いの問題ではないはず。

安全か安全でないか。

880 名前:デフォルトの名無しさん [2015/10/08(木) 12:39:28.24 ID:GTAWjzct.net]
妊娠と同じですとでも言いたいのか?



881 名前:デフォルトの名無しさん mailto:sage [2015/10/08(木) 13:46:07.06 ID:XT2XQMd7.net]
template関数をvirtualにはできない制限って今後のC++でも続くんでしょうか?
そもそもこの制限の理由は仮想関数テーブルを作るコストが大変だから、ってやつですよね?
コンパイル時間かかってもいいからやってくれ、ってニーズはないんでしょうか?

882 名前:デフォルトの名無しさん mailto:sage [2015/10/08(木) 14:03:10.79 ID:jZEKLa+0.net]
具体的にどういう風に仮想関数テーブルを構築したら
template関数のvirtual化が可能なんですか?
分割コンパイルは可能なのですか?
コンパイル単位を守れるのですか?

883 名前:デフォルトの名無しさん [2015/10/08(木) 14:29:05.60 ID:1TGlpU6G.net]
>>871
やってみろよ、まず
struct A
{
template <typename T>
virtual void func(T) { }
};

884 名前:デフォルトの名無しさん mailto:sage [2015/10/08(木) 14:40:04.09 ID:jZEKLa+0.net]
そんなこと出来っこないだろう、という返しだったのですが・・・

885 名前:デフォルトの名無しさん mailto:sage [2015/10/08(木) 14:48:15.03 ID:jZEKLa+0.net]
プログラムに必要なソースコードをグローバルな視点ですべて解析してから
コード生成を開始するならテンプレートな仮想関数どころか
もっととんでもない事が可能かも知れんが
C++はcpp単位で分割コンパイルするのがルールだから無理っていう
baseクラスをコンパイルしてvtable作る時には
それにどんな派生クラスがあるか分らないし、分らなくてもコンパイルできるように
なってるのがC++のルールだからね

886 名前:デフォルトの名無しさん mailto:sage [2015/10/08(木) 15:32:00.85 ID:YWpiDxnr.net]
テンプレートのインスタンスの概念すら知らないってことでしょ?
こんなの初心者レベルの内容じゃん
やってみろよじゃねーよ

887 名前:デフォルトの名無しさん mailto:sage [2015/10/08(木) 17:33:27.84 ID:G0kXf/E8.net]
むしろ出来ないと主張する根拠を聞きたいものだ

888 名前:デフォルトの名無しさん mailto:sage [2015/10/08(木) 18:00:23.72 ID:TDkjtQvD.net]
今の仕組みじゃ出来ないだろ。
普通のvtableより更にものすごく遅い
仕組みでやるなら出来ないことはないだろうが。

889 名前:デフォルトの名無しさん mailto:sage [2015/10/08(木) 18:07:23.28 ID:G0kXf/E8.net]
ISO/IEC 14882:2014は別にvtableの実装を要求してないのだが
「今の仕組み」が普遍的なものであるかのように語られても

890 名前:デフォルトの名無しさん [2015/10/08(木) 18:11:00.56 ID:1TGlpU6G.net]
vtable以外の実装の具体例もしくは具体案なしに空想論を語られてもねえ
今んとこ「できるわけない」という立場を取っているが
説得力のある反論〜反証は金払ってでも拝聴したい



891 名前:デフォルトの名無しさん mailto:sage [2015/10/08(木) 18:12:29.15 ID:jZEKLa+0.net]
普通に考えて無理だろう
実行時に動的にロードする事も有るし
うまくいくとは思えないね

892 名前:デフォルトの名無しさん [2015/10/08(木) 18:12:44.05 ID:GTAWjzct.net]
出来るからやるんじゃない
出来ないからやるんだよ

893 名前:デフォルトの名無しさん mailto:sage [2015/10/08(木) 18:13:11.65 ID:TDkjtQvD.net]
vtableより早い仕組みがあれば
vtableに置き換わるだろうが
vtableでできないなら何らかの
遅い仕組みで実装しなきゃいけない。
その機能を使わない場合に遅くならないようにするためおそらくはvtableとのハイブリッドになる。

少なくとも現状の仕様でできないのだから、できるというならリーズナブルな実装の一つでも提案しろと。

894 名前:デフォルトの名無しさん mailto:sage [2015/10/08(木) 18:20:47.25 ID:G0kXf/E8.net]
なんだ
「俺の使ってる糞コンパイラーではできない」
ってとか。そりゃしょーがない

895 名前:デフォルトの名無しさん mailto:sage [2015/10/08(木) 18:22:57.97 ID:jZEKLa+0.net]
struct base { template< typename T > virtual void method( T ){} };
struct derived : public base { template< typename T > void method( T ){} };
このとき、
base::method< int >();
base::method< float >();
derived::method< int >();
derived::method< float >();
の関数の実態があったとき、仮想関数に詰め込む順番をあわせる必要が有る
これはリンカで行うしかないが、動的にロードする場合はどうなるんだという問題が出る
また、derived::method<double>() を追加したとして
baseの方に対応する関数がなかった場合はどうするんだという問題が出る
リンカエラーにするのかvtableを拡張するのかどうするのか
動的にロードする時にどうするのか

896 名前:デフォルトの名無しさん mailto:sage [2015/10/08(木) 18:33:41.15 ID:TDkjtQvD.net]
凄いな。
それができるc++コンパイラを持っているらしいぞ。

897 名前:デフォルトの名無しさん mailto:sage [2015/10/08(木) 18:55:11.54 ID:G0kXf/E8.net]
「分割コンパイルするから無理」「テンプレートのインスタンスの考えからして無理」
と言うから理由を聞いてみたのだが
「ボクのvtable実装では無理」とか、話をすり替えるなんて

非仮想関数と非テンプレ仮想関数は追加オーバー無しでテンプレ仮想関数を実現する方法さえ思いつかないらしい

898 名前:デフォルトの名無しさん mailto:sage [2015/10/08(木) 19:11:16.86 ID:TDkjtQvD.net]
だから追加オーバーヘッドの無い
実装方法や実装したコンパイラを
具体的に出せと。

899 名前:デフォルトの名無しさん mailto:sage [2015/10/08(木) 19:14:33.28 ID:jZEKLa+0.net]
どちらにしても、C++は一つのcppのコンパイル中は、それしか見えない仕様
コンパイル単位とかいう物がある
だからテンプレート仮想関数のvtalbeの構築はリンカに頑張ってもらうしかないが
動的にリンクする場合はどうするんだという問題が出てくる

900 名前:デフォルトの名無しさん mailto:sage [2015/10/08(木) 19:20:02.77 ID:e3P/In2F.net]
>>841
されない



901 名前:デフォルトの名無しさん mailto:sage [2015/10/08(木) 19:28:15.57 ID:idvE5Tw4.net]
>>888
動的じゃなくてもリンカーがインスタンス化されてないtemplate仮装関数を発見しちゃったらtemplateのコードをインスタンス化してコンパイルやり直さなきゃいけないよね
動的リンクするならコンパイラを実行ファイルに組み込まなきゃいけない
JITありのインタプリタみたいなものになる

そんなものを規格に入れるわけがない

902 名前:デフォルトの名無しさん mailto:sage [2015/10/08(木) 20:03:43.82 ID:YWpiDxnr.net]
>>886
黙ってろゴミ

903 名前:デフォルトの名無しさん mailto:sage [2015/10/08(木) 20:13:36.43 ID:ETVAEvki.net]
vtable方式は構造体に(メンバ)関数へのポインタを埋め込む方法より
1段ポインタ参照が増えるから不利だが
vtable方式をやめるとdynamic_castの実現で頭を抱えることになると思う

904 名前:デフォルトの名無しさん mailto:sage [2015/10/08(木) 20:17:35.06 ID:tERbEPZQ.net]
相変わらず雲をつかむような話で喧嘩できるエスパーなスレですね

905 名前:デフォルトの名無しさん mailto:sage [2015/10/08(木) 20:19:58.94 ID:fbjyyooL.net]
え?お前出来ないの?

906 名前:デフォルトの名無しさん mailto:sage [2015/10/08(木) 20:43:07.22 ID:YWpiDxnr.net]
そもそも規格で駄目と明言されてる事なのに
自分じゃできないからって、実装方法すら他人を煽るわせびるわ
頭悪いにも程があるだろコイツ

907 名前:デフォルトの名無しさん mailto:sage [2015/10/08(木) 21:05:21.80 ID:idvE5Tw4.net]
>>895
現時点での規格で駄目だとしてもそれが将来的に実現可能かどうか、妥当かどうかを考えてみるのは興味深い事だと思うよ
ただ、なぜか彼は偉そうで喧嘩腰なのがいただけないけど

908 名前:デフォルトの名無しさん mailto:sage [2015/10/08(木) 21:07:33.55 ID:p4LiiGTw.net]
婆ちゃんのために天ぷら揚げないで

909 名前:デフォルトの名無しさん mailto:sage [2015/10/08(木) 22:26:31.48 ID:XT2XQMd7.net]
>>874
>プログラムに必要なソースコードをグローバルな視点ですべて解析してから
>コード生成を開始するならテンプレートな仮想関数どころか
>もっととんでもない事が可能かも知れんが

ですよね
C#の生産性の高さを考えると、C++ももう少しユーザに優しくあってほしいと思うわけです
当方数値科学計算が仕事ですがC++歴は浅いので、戯れ言として聞き流してください

910 名前:デフォルトの名無しさん mailto:sage [2015/10/08(木) 22:40:21.99 ID:ETVAEvki.net]
>>874
>プログラムに必要なソースコードをグローバルな視点ですべて解析してから
>コード生成を開始するならテンプレートな仮想関数どころか
>もっととんでもない事が可能かも知れんが

あーそれかなり無理
任意のプログラムに対して有限停止問題が解けるというのと多分同義



911 名前:デフォルトの名無しさん mailto:sage [2015/10/09(金) 00:01:41.40 ID:3NeJM4zm.net]
かなり無理は不可能なのかそうでないのか

912 名前:デフォルトの名無しさん mailto:sage [2015/10/09(金) 00:08:18.42 ID:GfpzmItO.net]
必要なソースコードをグローバルな視点ですべて解析してからコード生成
と同等のことは他言語でやってること

913 名前:デフォルトの名無しさん mailto:sage [2015/10/09(金) 00:09:59.28 ID:m6l+7vgz.net]
言葉の意味まで変更してしまえば当然なんでも可能です

914 名前:デフォルトの名無しさん mailto:sage [2015/10/09(金) 00:21:28.96 ID:IUqyiVrM.net]
>>901
へえ、例えば?
そういう言語があるとしたらそれソースコード以外のライブラリが使えないんだけどそういう言語はインタプリタで実行するものしか知らんなあ
そういう言語は大抵そこを実行するときに他のソースを読み込むし

915 名前:デフォルトの名無しさん mailto:sage [2015/10/09(金) 00:23:34.66 ID:m6l+7vgz.net]
C#ではジェネリックなメソッドをオーバーライド出切るんだけど、
C#のジェネリックとC++のテンプレートは仕組みが違うからなぁ

916 名前:デフォルトの名無しさん mailto:sage [2015/10/09(金) 00:26:43.46 ID:m6l+7vgz.net]
C#はそこそこ頑張っているんじゃないのかねぇ
ヘッダファイルは無いし、複数のファイル間で相互参照があっても
うまいことコンパイルしてくれるって聞いたこと有るぞ

917 名前:デフォルトの名無しさん mailto:sage [2015/10/09(金) 06:57:51.96 ID:VT/0EZUp.net]
>>899
> 任意のプログラムに対して有限停止問題が解けるというのと多分同義

全然違うと思う

918 名前:デフォルトの名無しさん mailto:sage [2015/10/09(金) 09:59:13.28 ID:4cEJzv4C.net]
>>904
抽象でしかできないぞ

919 名前:デフォルトの名無しさん mailto:sage [2015/10/09(金) 13:36:37.06 ID:IUqyiVrM.net]
>>904
ググっても

エラー出るよ助けてよー
出来ないから別の方法使え

しか見つからなかったけど本当に出来るの?

920 名前:デフォルトの名無しさん mailto:sage [2015/10/09(金) 18:02:05.60 ID:m6l+7vgz.net]
「ジェネリック メソッド オーバーライド C#」
でググって一番上にあるのに何を検索したんだかww
あまりにも検索能力が低すぎて日常にも支障が有るレベルでは



921 名前:デフォルトの名無しさん mailto:sage [2015/10/09(金) 18:22:33.28 ID:IUqyiVrM.net]
>>909
ttp://qiita.com/monry/items/5a512cfedba665b09135
これのことじゃないよね?

922 名前:デフォルトの名無しさん mailto:sage [2015/10/09(金) 18:36:34.10 ID:IUqyiVrM.net]
ああ、ここのコメントに書いてあった
オーバーライドしてねえじゃんで読むの止めてしまったわ

923 名前:デフォルトの名無しさん mailto:sage [2015/10/09(金) 23:04:30.76 ID:9aZeSACJ.net]
いつも常に自分の足を撃たないように地雷原を歩いてる気がする
新機能がオアシスに見えて逃げ水どころか底なし沼だったり、何だこの、これ

924 名前:デフォルトの名無しさん mailto:sage [2015/10/09(金) 23:53:06.45 ID:UhDsPJDp.net]
もし生まれ変わって再びプログラミングの世界に入るとして、C++選ぶのかな?

925 名前:デフォルトの名無しさん [2015/10/10(土) 00:59:46.33 ID:kmqm1hww.net]
生まれ変われるとしたら(C+=2)-1かな
例外のクソすぎるところをやり直させてくれるベルダンディが降臨したら迷わず帰依する

926 名前:デフォルトの名無しさん [2015/10/10(土) 01:03:34.69 ID:kmqm1hww.net]
頼みもしないスタック巻戻しにくっついてくるRTTIだとか
バカ高いコストのくせに RESUME NEXT がないとか

927 名前:デフォルトの名無しさん mailto:sage [2015/10/10(土) 01:24:55.29 ID:E0664ZmB.net]
>>914-915
コストって何がどれだけあること言ってんの?実行時間?メモリ使用量?コードサイズ?
最近のコンパイラなら問題になることなんてほとんど無いと思ってるんだけど。

928 名前:デフォルトの名無しさん [2015/10/10(土) 01:33:54.53 ID:kmqm1hww.net]
ほとんど無いと思ってて

929 名前:デフォルトの名無しさん mailto:sage [2015/10/10(土) 01:46:30.25 ID:E0664ZmB.net]
>>917
答えられないってことは、どうせ迷信や10年前のコンパイラでの話を未だに信じてるだけなんでしょ?

930 名前:デフォルトの名無しさん mailto:sage [2015/10/10(土) 06:51:03.57 ID:fP3IUTM/.net]
resume nextってなんぞやとググったらVBかよ



931 名前:デフォルトの名無しさん mailto:sage [2015/10/10(土) 08:05:16.97 ID:CCNhJ4kM.net]
デフォルトのコピーコンストラクタやコピー代入演算子って
コピー時に各

932 名前:メンバに対して(ビットコピーではなく)
コピーコンストラクタやコピー代入演算子を呼び出すことは保証されてる?
ポインタを持たせても、生ポインタではなくshared_ptrを使う限りは
デフォルトのコピーコンストラクタやコピー代入演算子に任せても安全?
[]
[ここ壊れてます]

933 名前:デフォルトの名無しさん mailto:sage [2015/10/10(土) 08:25:34.33 ID:QRzKPIbr.net]
>コピー時に各メンバに対して(ビットコピーではなく)
>コピーコンストラクタやコピー代入演算子を呼び出すことは保証されてる?
そうか考えたこともなかった
>>920頭いいな

934 名前:デフォルトの名無しさん mailto:sage [2015/10/10(土) 08:29:34.25 ID:fP3IUTM/.net]
>>920
安全

935 名前:デフォルトの名無しさん [2015/10/10(土) 08:40:12.34 ID:kmqm1hww.net]
>>918
なんの今現在の話だよ
ちょっとやってみりゃすぐわかる馬鹿なこと聞くから相手してやんねーの

936 名前:デフォルトの名無しさん mailto:sage [2015/10/10(土) 08:50:45.32 ID:fP3IUTM/.net]
>>923
いいからVBつかっとけよ

937 名前:デフォルトの名無しさん mailto:sage [2015/10/10(土) 14:35:21.78 ID:C2+tlbor.net]
ちょっと調べればすぐ分かるから教えてやらない(震え声)

いい加減に適当に喧嘩をふっかけてそれを買うとすっとぼけるのはやめようよ
まったく意味のないトラブルばかり招くから…

938 名前:デフォルトの名無しさん mailto:sage [2015/10/10(土) 16:00:00.63 ID:WQItE+Nd.net]
VBと比較してる時点でどうせネットの風評信じて自分の目で
実際の正常系に影響与えてるかどうか検証してないだけだろう
さもなくばただの条件分岐に例外多用してるアレな人か

939 名前:デフォルトの名無しさん mailto:sage [2015/10/10(土) 16:53:49.17 ID:E0664ZmB.net]
>>923
ちょっとやってみりゃ↓こんな結果(-2.6%~+4.0%)になるだろうってのがわかってるんだよ。
preshing.com/20110807/the-cost-of-enabling-exception-handling/
この結果でも4年前のだしな。

940 名前:デフォルトの名無しさん mailto:sage [2015/10/10(土) 17:12:47.93 ID:+pTteXD6.net]
resume nextが欲しいと思う時点でやばい



941 名前:デフォルトの名無しさん [2015/10/10(土) 18:29:23.01 ID:DZQ9wvWi.net]
>>925
調べればじゃねえよ、やってみればだ
とぼけてるのはおまえだろ
怠け者め

なんで4年前の記事なんか引っ張んだよ
おまえがやれ、つーかできねえんならこの板ではROMってろ

942 名前:デフォルトの名無しさん mailto:sage [2015/10/10(土) 19:31:04.17 ID:WQItE+Nd.net]
>>929
やんのはオメーだろ

943 名前:デフォルトの名無しさん [2015/10/10(土) 20:43:07.08 ID:DZQ9wvWi.net]
なすり合いってことにしたいんなら
そうすれば?

おまえが何も得ないだけだし

944 名前:デフォルトの名無しさん mailto:sage [2015/10/10(土) 20:52:50.43 ID:wZWPBuKi.net]
擦り付け合いとかじゃなく、
お前がやれ
その結果は書き込まなくて良い

945 名前:デフォルトの名無しさん mailto:sage [2015/10/10(土) 20:53:39.88 ID:WQItE+Nd.net]
馬鹿じゃねーの?押し付けてんのはお前だろ
せめて自分で実際にやってから言えよクズ

946 名前:デフォルトの名無しさん mailto:sage [2015/10/10(土) 20:54:33.77 ID:RukYXTRG.net]
まあまあ

947 名前:デフォルトの名無しさん mailto:sage [2015/10/10(土) 21:14:34.91 ID:LXdnro1p.net]
えらそうに言う奴は先ずテメーのソースコードをここに貼ってみろや!

948 名前:デフォルトの名無しさん mailto:sage [2015/10/10(土) 21:31:15.08 ID:PxJo6CPN.net]
おらおらおらおらー

949 名前:デフォルトの名無しさん mailto:sage [2015/10/10(土) 21:43:47.39 ID:0dTjLyRb.net]
やめて!
俺のために戦わないで!

950 名前:デフォルトの名無しさん [2015/10/10(土) 23:11:33.18 ID:6QuLtZGt.net]
以上のような状態をセックスと定義します。

男同士でセックスするのはホモです。
従って>>929以降はホモ野郎という事になります。

気持ち悪い。



951 名前:デフォルトの名無しさん mailto:sage [2015/10/10(土) 23:20:00.07 ID:9fj3wNmr.net]
>>938
その定義だとお前もって事になるけど大丈夫?

952 名前:934 mailto:sage [2015/10/10(土) 23:38:35.56 ID:pverhzbk.net]
まず「以上のような状態」を定義してくれ
なぜ俺はホモ疑いに巻き込まれたんだ

953 名前:デフォルトの名無しさん mailto:sage [2015/10/10(土) 23:40:41.29 ID:0dTjLyRb.net]
通常の定義と全く異なる俺定義を展開されても
しかも言葉のすり替えでホモに結論づけするとは悪質だな

954 名前:デフォルトの名無しさん mailto:sage [2015/10/11(日) 01:48:42.13 ID:XDL1o532.net]
homoとhogeって似てるな

955 名前:デフォルトの名無しさん mailto:sage [2015/10/11(日) 02:35:14.49 ID:cdE875Rm.net]
C++書く人達って無駄に攻撃的な人多いね

956 名前:デフォルトの名無しさん mailto:sage [2015/10/11(日) 03:49:40.51 ID:Nau1HDji.net]
C++技術者にも色々いるだけだ

957 名前:デフォルトの名無しさん mailto:sage [2015/10/11(日) 04:00:43.62 ID:PVe4pURO.net]
ID:kmqm1hww
とかVBだしな
C++に限らない

958 名前:デフォルトの名無しさん mailto:sage [2015/10/11(日) 04:51:42.92 ID:gSJDxW7y.net]
おっと江○添の悪口はそこまでだ

959 名前:デフォルトの名無しさん mailto:sage [2015/10/11(日) 15:18:32.98 ID:OMjxUQhq.net]
ごちゃごちゃ言ってないでしゃぶれよ

960 名前:デフォルトの名無しさん [2015/10/11(日) 21:07:53.47 ID:WBYIj+O0.net]
VBだっておバンバン
それWindows世代だろw



961 名前:デフォルトの名無しさん mailto:sage [2015/10/12(月) 06:25:32.18 ID:b39cwc+L.net]
>>942
ソフトウェア商品のグレードなんかの
Home Edition てのも Homo Edition に似てるね。

962 名前:デフォルトの名無しさん mailto:sage [2015/10/12(月) 12:18:52.11 ID:eT/PtTP3.net]
なんだそのクリックすると喘ぎ声が出そうな製品

963 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 18:00:35.40 ID:ouSN4Vlw.net]
std::coutというか,basic_ostreamのoperator>>についての質問?なんですが,
javaの課題をC++でやってみようとおもって,まだ途中なんですが以下のコードを書きました.
codepad.org/DdMr0gro

これをVS2015環境下でデバッグ実行すると,コマンドライン上に
 [test]
と書かれるはずが
 ] est
つまり,basic_ostreamのイテレータ?が最初に戻ってしまう現象が現れました.
(コマンドライン引数には data/test.txt を指定して,dataフォルダに
「test」と書かれたtest.txtを配置しています.)
おそらくifstreamかgetline()が原因なんだと思いますが,cinとcoutの同期が
原因かなと思ってtieしても解決しませんでした.
なにが原因でこうなってしまうんでしょうか?

964 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 18:16:39.48 ID:KCAkXS7a.net]
ソース読んでないが、テキストファイル側にbom付いてるだけじゃね

965 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 18:20:47.78 ID:aH9tdNzV.net]
ios::binaryで読んでるから\r\nが\nに変換されずに読みこまれてる
coutに\rを入れるとその行の先頭にカーソルが移動する

966 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 18:43:29.57 ID:ouSN4Vlw.net]
なるほど,改行コードのことだとは気付きませんでした.
となると,自分で取り除くか,binaryではなく,ios::inにするとよさそうですね.
ありがとうございました.

967 名前:デフォルトの名無しさん [2015/10/15(木) 20:43:14.49 ID:Z5UOv0gP.net]
ストリームはクソだわ

968 名前:デフォルトの名無しさん [2015/10/15(木) 20:59:33.37 ID:kRNzdeWM.net]
そこでHaskellですよ。

969 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 21:31:42.27 ID:Pl/e/d+4.net]
Javaの課題を写したんなら当然だがc++らしくないな
いっそ元の問題を晒してみたら?
だれかかっこいいc++を書きてくれるかもよ

970 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 22:21:39.39 ID:eGvButUC.net]
>>956
IOは副作用がある (キリッ



971 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 22:39:21.45 ID:4rmzgbky.net]
>>958
そこでモナドですよ(キリッ

972 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 23:43:57.69 ID:KCAkXS7a.net]
っ ::fscanf

973 名前:デフォルトの名無しさん mailto:sage [2015/10/16(金) 00:21:52.64 ID:yFhNulgB.net]
std::fscanfでなく::fscanfを薦める奴に
ロクな奴はいない

974 名前:デフォルトの名無しさん [2015/10/16(金) 01:22:34.18 ID:MCA6CYcJ.net]
extern "C" int fscanf(FILE*, const char* ...);
namespace std {
using ::fscanf;
}

975 名前:デフォルトの名無しさん mailto:sage [2015/10/17(土) 08:30:18.81 ID:15bBcd+N.net]
可変長引数って
func(const char *s, ...)
func(const char *s ...)
どっちが正しいの?

976 名前:デフォルトの名無しさん [2015/10/17(土) 11:43:59.18 ID:U1ERA7pu.net]
#include <iostream>
using namespace std;
template<typename ...T>
auto f(T...x)

977 名前:{
for(int i:x...)
cout<<i<<endl;
};
int main()
{
f(1,2,3);
return 0;
}

昔こういうことが出来たような気がするんですが
どうやるのか忘れました
教えてください
[]
[ここ壊れてます]

978 名前:デフォルトの名無しさん mailto:sage [2015/10/17(土) 12:19:44.07 ID:e8xa7PiS.net]
>>963
どちらも正しい

979 名前:デフォルトの名無しさん mailto:sage [2015/10/17(土) 12:28:14.71 ID:e8xa7PiS.net]
>>964
for (int i: {x...})
initializer_listを構築してそれをイテレートする

980 名前:デフォルトの名無しさん [2015/10/17(土) 12:50:24.84 ID:U1ERA7pu.net]
ありがとうございます



981 名前:デフォルトの名無しさん [2015/10/20(火) 18:25:41.85 ID:3vGCFixJ.net]
ファイルから指定文字列を検索したい。以下のコードだとsearchが実行時にエラーExpression: istreambuf_iterator is not dereferencable
ifstream f("Text.txt");
string s("is");

istreambuf_iterator<char> eof;
eof == search(
istreambuf_iterator<char>(f.rdbuf()),
//f.rdbuf(),
eof,
s.begin(),
s.end())
);

VS2013です
どうすればいいですか

982 名前:デフォルトの名無しさん mailto:sage [2015/10/20(火) 20:46:00.53 ID:8yDPqMwa.net]
cpprefjp.github.io/reference/iterator/istreambuf_iterator.html
-------引用開始-------
istreambuf_iteratorは、operator++()でイテレータを進めることにより、ストリームバッファのsbumpc()メンバ関数でストリームからデータを読み込む入力イテレータである。
ストリームからのsgetc()メンバ関数による読み取りがTraits::eof()を返した場合に、イテレータはendイテレータと等しくなる。
-------引用終わり-------

って事で、1文字ずつしか読み込まないのでは?

983 名前:デフォルトの名無しさん [2015/10/20(火) 21:44:27.08 ID:RWFAio1T.net]
eofに代入してないね
等値比較して結果を捨ててる

984 名前:デフォルトの名無しさん mailto:sage [2015/10/20(火) 21:51:20.77 ID:wM4Y4a1V.net]
>>968
案1
ファイルの内容を全部stringに読み込んでfindする

案2
ファイルの内容を全部stringに読み込んでregexする

案3
外部コマンドとしてgrepとかawkとかsedをインストールしておいてc++から起動する


お好きな方法でどうぞ

985 名前:デフォルトの名無しさん mailto:sage [2015/10/20(火) 22:01:04.78 ID:82Xf4s6u.net]
std::searchはForward Iteratorを要求するから
Input Iteratorのistreambuf_iteratorを渡してもだめだわさ

std::findならInput Iteratorでいいから一文字目だけをfindで見つけて
二文字目以降は別にチェックするとか

986 名前:968 [2015/10/20(火) 23:37:01.59 ID:3vGCFixJ.net]
ありがとう
試行錯誤してみるよ

987 名前:デフォルトの名無しさん mailto:sage [2015/10/20(火) 23:46:27.98 ID:Kav8lZYy.net]
>>973
一番簡単なのはstd::stringクラスのfindで
一番応用が利くのはstd::regex系を使いこなすこと
だと思うな

988 名前:デフォルトの名無しさん mailto:sage [2015/10/21(水) 00:48:57.67 ID:k2x/6pgE.net]
#include <iostream>
#include <fstream>
#include <iterator>
#include <cstdlib>

int main(int argc, char** argv) {

std::ifstream ifs("src/main.cpp");
std::istream_iterator<char> is(ifs);
std::istreambuf_iterator<char> ibf(i
fs);
std::istreambuf_iterator<char> ibf_e
of;

std::string istr(ibf,ibf_eof);
std::cout << istr.find("std");

return EXIT_SUCCESS;
}

989 名前:デフォルトの名無しさん mailto:sage [2015/10/21(水) 01:47:07.42 ID:k2x/6pgE.net]
あ、すまん。std::istream_iterator<char> is(ifs); この行不要な
それとcoutの最後にはstd::endlつけてやってくれ

990 名前:デフォルトの名無しさん [2015/10/22(木) 13:25:09.22 ID:3HJoxiXv.net]
ベクトルのコピーで検索すると
ベクトル同士をコピー代入演算子でコピーするのが一番簡単なきがするのですが
違うやり方ばかり出てくるのはなぜですか?
これがまちがっているということですか?



991 名前:デフォルトの名無しさん mailto:sage [2015/10/22(木) 13:34:38.59 ID:TivbSMZT.net]
まちがってないで

992 名前:デフォルトの名無しさん [2015/10/22(木) 13:47:47.59 ID:3HJoxiXv.net]
ありがとうございます

993 名前:デフォルトの名無しさん mailto:sage [2015/10/22(木) 13:55:49.77 ID:CPFSlH5N.net]
違うやり方ってのはstd::vector::assignでbeginからendまでコピーとか?
それのメリットはvector以外の型からもコピーできることかね

994 名前:デフォルトの名無しさん mailto:sage [2015/10/22(木) 15:52:01.07 ID:wxGQnodN.net]
>>977
単純なコピーの需要が少ないのでは?
単純コピーなら参照でも十分だし

コピーするのは何かを変更したいからワザワザコピーしてを作るわけで
変更するならコピーするタイミングでやるのが簡単だからとか??

あと、要素に参照とかポインタが含まれている場合
シャローコピーになっちゃうわけで参照先の管理が面倒くさくなっちゃう
ディープコピー作るなら一工夫必要だしね

995 名前:デフォルトの名無しさん mailto:sage [2015/10/22(木) 16:46:09.18 ID:UnQTPRBv.net]
vectorの便乗質問ですが、reserveされてしまった余分な容量を削除する方法としてswap技法
std::vector<T>(x).swap(x)
がありますが、これは一時オブジェクトは全く作成されないのですか?
無名オブジェクトとはいえコンストラクタを呼んでいるわけですから、作成されてるような気がするのですが

996 名前:デフォルトの名無しさん mailto:sage [2015/10/22(木) 17:44:22.04 ID:TivbSMZT.net]
されてるよ

997 名前:デフォルトの名無しさん mailto:sage [2015/10/22(木) 18:39:56.40 ID:UnQTPRBv.net]
>>983
ありがとうございます。やはり作成されるのですね

vectorの容量をシュリンクする効率的な方法としてswap技法を紹介してる人を目にしますが、
コードはシンプルになるものの処理効率が上がるわけではないですよね

998 名前:デフォルトの名無しさん mailto:sage [2015/10/22(木) 18:43:29.83 ID:TivbSMZT.net]
>>984
swap技法以外に、方法なくない?

999 名前:デフォルトの名無しさん mailto:sage [2015/10/22(木) 18:49:05.63 ID:+o7cqPdB.net]
>>981 は質問の意図をまったく把握してないから無視していいと思う

>>984
複雑で効率的な方法示してみなよ。無いから。

1000 名前:デフォルトの名無しさん mailto:sage [2015/10/22(木) 18:53:09.88 ID:UZ6K9ouN.net]
自作のベクタークラスを作る
サイズを縮小する場合はreallocを使う



1001 名前:デフォルトの名無しさん mailto:sage [2015/10/22(木) 18:56:31.41 ID:IiO/at8e.net]
shrink_to_fit()

1002 名前:デフォルトの名無しさん mailto:sage [2015/10/22(木) 18:59:03.48 ID:E1Ocrnf5.net]
最初から必要なサイズを確保すればいい。

1003 名前:デフォルトの名無しさん mailto:sage [2015/10/22(木) 20:19:27.23 ID:gQOdFLsP.net]
春よこい

1004 名前:デフォルトの名無しさん mailto:sage [2015/10/22(木) 21:33:39.08 ID:OXupIzBk.net]
次スレ

C++相談室 part120
peace.2ch.net/test/read.cgi/tech/1445516998/

1005 名前:デフォルトの名無しさん mailto:sage [2015/10/22(木) 21:55:12.08 ID:kinLxVE3.net]
>>989
必要なサイズがわかってるなら単なる配列でよくね?

1006 名前:デフォルトの名無しさん mailto:sage [2015/10/22(木) 22:15:13.77 ID:TKCRaEBU.net]
>>992
だったら君は配列だけ使ってれば?

1007 名前:デフォルトの名無しさん mailto:sage [2015/10/22(木) 22:43:30.77 ID:kinLxVE3.net]
>>993
必要なサイズがわかってるなら、そうしてますが何か?

1008 名前:デフォルトの名無しさん [2015/10/22(木) 23:19:22.19 ID:OwqJeF9X.net]
必要なサイズがわかっててもvectorなドアホがいたw

1009 名前:デフォルトの名無しさん mailto:sage [2015/10/22(木) 23:21:34.94 ID:plnHfgiP.net]
ポインタでも参照でもない変数って
仮想関数呼んでも呼ばれる関数が静的に決まるよね
このときもvtable経由で呼ばれる?(仮想関数の呼び出しオーバーヘッドがある?)
それともオーバーヘッド0で呼ばれる?
それとも未定義? 最適化次第?

1010 名前:デフォルトの名無しさん mailto:sage [2015/10/22(木) 23:21:45.47 ID:4GjtJ8Lk.net]
「わかる」タイミングの問題だ



1011 名前:デフォルトの名無しさん mailto:sage [2015/10/22(木) 23:22:03.08 ID:l1df8Qjo.net]
vectorって配列に比べてそんなにオーバーヘッドあるか?

1012 名前:デフォルトの名無しさん mailto:sage [2015/10/22(木) 23:24:06.05 ID:Y4jcRaLX.net]
スタック容量を減らすならarray < vector

1013 名前:デフォルトの名無しさん mailto:sage [2015/10/22(木) 23:33:55.59 ID:rvBOfPQs.net]
>>995
それをドアホというお前さんこそドアホである可能性

1014 名前:1001 [Over 1000 Thread.net]
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

1015 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<258KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef