- 1 名前:デフォルトの名無しさん mailto:sage [2017/10/10(火) 00:11:34.01 ID:nc/5PI4P0.net]
- 次スレを立てる時は本文の1行目に以下を追加して下さい
!extend:on:vvvvv:1000:512 C++に関する質問やら話題やらはこちらへどうぞ。 ただし質問の前にはFAQに一通り目を通してください。 IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。 前スレ C++相談室 part131 mevius.2ch.net/test/read.cgi/tech/1501295308/ このスレもよろしくね。 【初心者歓迎】C/C++室 Ver.101【環境依存OK】 mevius.2ch.net/test/read.cgi/tech/1500329247/ ■長いソースを貼るときはここへ。■ codepad.org/ https://ideone.com/ [C++ FAQ] https://isocpp.org/wiki/faq/ www.bohyoh.com/CandCPP/FAQ/ (日本語) VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
- 970 名前:デフォルトの名無しさん mailto:sage [2017/11/22(水) 21:56:28.30 ID:+hB2MqUt0.net]
- ES5以降ケツコンマOKになったんだからJSONも新規格にすりゃいいのに。
- 971 名前:デフォルトの名無しさん mailto:sage [2017/11/22(水) 23:47:16.65 ID:AAzHTorM0.net]
- >>936
正規表現で済んでいるのになんでスタックが要るんじゃ!!!!!!11!1!!!!
- 972 名前:はちみつ餃子 mailto:sage [2017/11/23(木) 00:25:32.50 ID:fj1LdTry0.net]
- >>954
意味がわからないので説明して。
- 973 名前:デフォルトの名無しさん mailto:sage [2017/11/23(木) 00:36:02.97 ID:h8NdPAUM0.net]
- 文脈自由文法は解析にスタック(理論上は無限の段数のやつ)が要るクラスだが
正規言語は有限状態マシンで済む言語のクラス 今話題の設定言語は無限の入れ子は持たなそうなので正規言語で逝ける、
- 974 名前:デフォルトの名無しさん mailto:sage [2017/11/23(木) 00:37:37.76 ID:h8NdPAUM0.net]
- と、
言いたいのでわ…
- 975 名前:はちみつ餃子 mailto:sage [2017/11/23(木) 01:07:08.12 ID:fj1LdTry0.net]
- ん〜、そのへんの学問的な分類はよう知らんけど、取りうる状態は有限でもバックトラックは起こるしそのためのスタックは要るんちゃう?
同じ文法の構文解析器を作ればどっちのアプローチでもスタックの消費量はかわらんと思うんだけど。 より制限の強い方で「十分」っつーならそれはわかる。 C++ 標準に入ってる機能で出来りゃ楽だしな。 ただ、正規表現ライブラリだとエラーの検出場所の伝達方法とかで融通が利かなかったりするので、 ユーザーが入力する設定ファイルを解析するパーサを作るとなると作りこみ難いという感触があるかな。
- 976 名前:デフォルトの名無しさん mailto:sage [2017/11/23(木) 06:39:00.31 ID:NFzuGiE50.net]
- 「チョムスキー階層」でググれ
- 977 名前:デフォルトの名無しさん mailto:sage [2017/11/23(木) 07:23:17.08 ID:NFzuGiE50.net]
- >>958
>ん〜、そのへんの学問的な分類はよう知らんけど、取りうる状態は有限でもバックトラックは起こるしそのためのスタックは要るんちゃう? 非決定性有限オートマトンは決定性有限オートマトンに変換できるので、 バックトラックが一切起こらない形に書き換えることは可能。 lexなんかだと、そのような変換を行ったコードを生成していたはず。 ただし、プログラム言語などで一般的に使われる正規表現は、 ここでいう正規言語を拡張したものなので、この限りではない。
- 978 名前:デフォルトの名無しさん mailto:sage [2017/11/23(木) 14:40:51.51 ID:QeiOUUJtx.net]
- C++のプロジェクトに戻りたい。
- 979 名前:デフォルトの名無しさん mailto:sage [2017/11/23(木) 18:06:46.17 ID:5yPMgLrz0.net]
- どうぞどうぞ
- 980 名前:デフォルトの名無しさん mailto:sage [2017/11/23(木) 18:56:01.32 ID:h8NdPAUM0.net]
- もう次スレ要らないのでは
- 981 名前: mailto:sage [2017/11/23(木) 19:03:52.53 ID:fGVRHt7J0.net]
- またまた低レベルな質問で恐縮しております。よろしくお願いいたします。
https://ideone.com/MXvhkC ここまで実装できている状態で、演算子 += を定義するには、どのように書けばいいでしょうか? なお実際に作業している対象は自作の多桁長演算ライブラリで、operator+=() を operator=() や operator+() を再利用できればうれしいな、と考えております。 operator+() や operator=() に書いていることを、繰り返して書くのは避けたいと考えているのです。
- 982 名前:デフォルトの名無しさん mailto:sage [2017/11/23(木) 19:07:30.71 ID:IGgCkWwq0.net]
- 普通はoperator+=()を実装してから、それを使ってoperator+を実装する
- 983 名前: mailto:sage [2017/11/23(木) 19:44:55.34 ID:fGVRHt7J0.net]
- >>965
なるほど https://ideone.com/t89oo1 しかし、+=, -= ならまだしも、 *=, /=, %= を考えると、なんだか似たようなコードを二箇所に書きそうな雰囲気がします…
- 984 名前:デフォルトの名無しさん mailto:sage [2017/11/23(木) 19:54:00.12 ID:IGgCkWwq0.net]
- だからboostにこんなのがあったりする
https://boostjp.github.io/tips/operators.html
- 985 名前:デフォルトの名無しさん mailto:sage [2017/11/23(木) 19:56:33.11 ID:5nCr5Wf60.net]
- CRTP使って自動実装
- 986 名前:はちみつ餃子 mailto:sage [2017/11/23(木) 20:01:00.33 ID:fj1LdTry0.net]
- >>964
なんで friend がついてんの?
- 987 名前:デフォルトの名無しさん mailto:sage [2017/11/23(木) 20:17:56.76 ID:j5z8beti0.net]
- >>967
これってなんでprivate継承なのか分からない
- 988 名前:はちみつ餃子 mailto:sage [2017/11/23(木) 20:23:32.48 ID:fj1LdTry0.net]
- >>970
スライシングを起こさないようにじゃないの。 デストラクタを virtual にすると要らん仮想関数テーブルが作られちゃうからな。 それでいて定義する関数は friend 関数にしてるから外側からでも見えるんだな。
- 989 名前: mailto:sage [2017/11/23(木) 20:46:50.20 ID:fGVRHt7J0.net]
- >>969
こんな小題でもいろいろと試されるんですね… たしかに operator+=() は、意味からいっても friend である必要はまったくないですね。 一方 operator==(), operator+() は式の表現としての対象性を保存したいので、friend をつけたいと考えています。 operator<<() に対しては friend を必ずつけないといけないようですが、その理由はよくわかっていません。 https://ideone.com/pR0EP1
- 990 名前:デフォルトの名無しさん [2017/11/23(木) 22:59:38.32 ID:vKpvx9Uha.net]
- IDE使っていて思うのがtemplate関数でデフォルト引数classAを設定すれば、
template<typename T=classA> void Test(T tmp){ tmp.func(1, 2, 3); } 上記のtmp.のところでclassAの関数とかが出て来るようになると嬉しいとか思ったり コンセプトとかで対応できるようになるんでしょうか?
- 991 名前:デフォルトの名無しさん mailto:sage [2017/11/23(木) 23:16:02.95 ID:WYrOiD8s0.net]
- mix-inもまともに知らないやつがなぜ回答してるのか…
- 992 名前:デフォルトの名無しさん mailto:sage [2017/11/24(金) 00:17:10.75 ID:mELw8YtS0.net]
- >>973
言語仕様っていうよりIDEの性能のような。 コンセプトまで構文解析してサジェストするようになれば確かにできるかもしれんけど。
- 993 名前:デフォルトの名無しさん mailto:sage [2017/11/24(金) 01:03:21.71 ID:/7rxT1Yr0.net]
- >>973
技術的には可能だからlibclangでなんとかなるようになるなら誰かやってくれるかもね コード補完にプラグインを使えないIDEなら開発元にリクエストするしかない
- 994 名前:デフォルトの名無しさん mailto:sage [2017/11/24(金) 01:39:31.39 ID:Z3szivMI0.net]
- mix-inで理解が止まっている人がなんか吼えてますな
- 995 名前:デフォルトの名無しさん mailto:sage [2017/11/24(金) 08:42:41.97 ID:ZeExn92sr.net]
- >>973
コンセプトはシンタックスの誤りを判定するのみで型情報を持っていないため その補完は期待できない
- 996 名前:デフォルトの名無しさん mailto:sage [2017/11/24(金) 09:00:16.20 ID:nFkUcp0I0.net]
- >>977
boost operatorsのprivate継承がmix-in以外のなんだと思ってるんだ?
- 997 名前:デフォルトの名無しさん mailto:sage [2017/11/24(金) 10:03:13.88 ID:dhAYmdbT0.net]
- 静的リフレクションが欲しい
- 998 名前:デフォルトの名無しさん mailto:sage [2017/11/24(金) 10:21:33.74 ID:Un7I7rhA0.net]
- 後のプリプロセッサである
- 999 名前:デフォルトの名無しさん [2017/11/24(金) 12:38:49.19 ID:p8RxfMqqa.net]
- C++を勉強しようとしてるんだが
基本的にCの書き方が一般なのか C++の書き方が一般なのか教えてもらいたい
- 1000 名前:デフォルトの名無しさん [2017/11/24(金) 12:51:25.91 ID:l1+FhW7v0.net]
- コーディングスタイル?
そんなの好きにすればいいよ
- 1001 名前:デフォルトの名無しさん mailto:sage [2017/11/24(金) 13:21:28.52 ID:w0OmJEj50.net]
- >>982
Cの書き方とかC++の書き方とか一般的とかない 「一般的」なるものを求めたいならメジャーなIDEのデフォルトのオートフォーマットだろうな
- 1002 名前: mailto:sage [2017/11/24(金) 13:44:06.80 ID:ZNkp8uW60.net]
- >>964
結局こうなりました https://ideone.com/SUSTBj
- 1003 名前:はちみつ餃子 mailto:sage [2017/11/24(金) 14:07:55.96 ID:lG8HVUMw0.net]
- >>985
operator+= の返却値は参照にしといた方が辻褄が合うので良いよ
- 1004 名前:デフォルトの名無しさん mailto:sage [2017/11/24(金) 14:10:30.10 ID:/RqU0h4Pd.net]
- 関数内で作ったベクターやマップは関数を抜けたらメモリ解放されると考えてよかです?
- 1005 名前:はちみつ餃子 mailto:sage [2017/11/24(金) 14:13:40.22 ID:lG8HVUMw0.net]
- >>987
記憶クラスによる。
- 1006 名前:デフォルトの名無しさん mailto:sage [2017/11/24(金) 14:25:57.62 ID:/RqU0h4Pd.net]
- >>988
記憶クラスによるとは スマホで打ってるから書式とかガタガタだけど下みたいなことしてる createmapってのを抜けたときにvectorもmapも解放されると信じている vector XX( *map) { 要素数二個のstring型のvectorデータを作成 return vector<string> ←要素数2 } createmap () { map<string,string> y { vector<string> tmp = XX(&y) y.insert( tmp[1] , tmp[2]) } }
- 1007 名前:デフォルトの名無しさん [2017/11/24(金) 14:36:50.33 ID:9/UAKu4i0.net]
- うん、信じていい
XXから抜けるときにムーブコンストラクタでtmpへ移動され createmapから抜けるときに解放される このときoperator deleteが呼び出されるが operator deleteがどのようなタイミングで解放しているかには依存すべきでない 我々が関心を持つべきはoperator deleteが呼び出されるタイミングで実装の詳細ではない
- 1008 名前:はちみつ餃子 mailto:sage [2017/11/24(金) 15:15:03.03 ID:lG8HVUMw0.net]
- >>989
static 付きで宣言してればプログラムの終わりに解体されるし、 new で作れば delete されたときが解体されるし、 そうでなければスコープの終わりに解体される。 「関数内で作った」というだけでは情報不足。 >>989 のような例であればスコープの終わりで解体されることは保証される。 それと >>990 はムーブコンストラクタの話を出してるけど C++17 以降ではこういう場合は RVO の発動が必須になってなかったっけ?
- 1009 名前:デフォルトの名無しさん [2017/11/24(金) 15:33:02.71 ID:9/UAKu4i0.net]
- >>991
990だが、何を言っているのか、悪いがよくわからん XXがcreatemapとは別の翻訳単位から外部結合されている場合でも その何だ、ムーブコンストラクタの回避(?)が必須になったのか?
- 1010 名前:はちみつ餃子 mailto:sage [2017/11/24(金) 16:06:58.81 ID:lG8HVUMw0.net]
- >>992
そう。 RVO 必須だからコピーコンストラクタもムーブコンストラクタも無いクラスでも OK っていう新しいルール。 https://wandbox.org/permlink/X6g7JSpkSl82VvtZ
- 1011 名前:デフォルトの名無しさん [2017/11/24(金) 16:44:55.52 ID:9/UAKu4i0.net]
- >>993
OK? それは03でも同じことやん
- 1012 名前:はちみつ餃子 mailto:sage [2017/11/24(金) 16:48:44.24 ID:lG8HVUMw0.net]
- >>994
いや >>993 みたいなのは C++14 以前では NG になるよ。
- 1013 名前:デフォルトの名無しさん mailto:sage [2017/11/24(金) 16:54:03.03 ID:WoNXR2ax0.net]
- C++相談室 part133
mevius.5ch.net/test/read.cgi/tech/1511509970/
- 1014 名前:デフォルトの名無しさん mailto:sage [2017/11/24(金) 16:58:12.64 ID:jkTO/gHT0.net]
- 乙。
- 1015 名前:デフォルトの名無しさん mailto:sage [2017/11/24(金) 17:04:12.57 ID:BCw6/Ft50.net]
- 彼。
- 1016 名前:はちみつ餃子 mailto:sage [2017/11/24(金) 17:07:25.34 ID:lG8HVUMw0.net]
- >>999 なら長門有希は俺の嫁
- 1017 名前:はちみつ餃子 mailto:sage [2017/11/24(金) 17:07:54.81 ID:lG8HVUMw0.net]
- >>1000 なら双葉杏も俺の嫁
- 1018 名前:1001 [Over 1000 Thread.net]
- このスレッドは1000を超えました。
新しいスレッドを立ててください。 life time: 45日 16時間 56分 20秒
- 1019 名前:過去ログ ★ [[過去ログ]]
- ■ このスレッドは過去ログ倉庫に格納されています
|

|