- 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 名前:過去ログ ★ [[過去ログ]]
- ■ このスレッドは過去ログ倉庫に格納されています
|

|