- 1 名前:デフォルトの名無しさん mailto:sage [2014/12/18(木) 13:46:24.42 ID:Mboq20NA]
- C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。 IDE (VC++など)などの使い方の質問はその開発環境のスレに お願いします。 前スレ C++相談室 part114 peace.2ch.net/test/read.cgi/tech/1408743258/ このスレもよろしくね。 【初心者歓迎】C/C++室 Ver.94【環境依存OK】 [転載禁止]2ch.net peace.2ch.net/test/read.cgi/tech/1417179292/ 次期規格C++1yはこちら C++14/C++1z 20 peace.2ch.net/test/read.cgi/tech/1410382924/ ■長いソースを貼るときはここへ。■ codepad.org/ ideone.com/
- 341 名前:デフォルトの名無しさん mailto:sage [2015/01/04(日) 13:11:09.63 ID:XPPzqmKU]
- >規格でどっちでもいいことになってて
ソースは?
- 342 名前:デフォルトの名無しさん mailto:sage [2015/01/04(日) 13:16:11.02 ID:+b+eo/V4]
- >>341
聞く前にググればすぐ出てくる とりあえず www.s-yamaga.jp/opinions/doryoko.htm >日本は英米流で小数点には<.>派で、<,>は位取りに使っているが、仏独など多くの国では小数点は<,>で、<.>は位取り(位取りのため空白を使う場合もある)である。 >2003年10月にパリで開かれた国際度量衡会議でこの問題が検討された。 >17日の1国1票の投票の結果、「小数点は<,>か<.>のどちらかである」とすることで(つまりどちらでもよいということで)、当面の決着がついた。
- 343 名前:デフォルトの名無しさん mailto:sage [2015/01/04(日) 13:20:42.93 ID:+b+eo/V4]
- 当時読んだ活字の記憶では
・位取りはなるべく空白を使うこと(カンマでもピリオドでもない) ただし強制ではない ・小数点は、カンマでもピリオドでもよい というものだった
- 344 名前:デフォルトの名無しさん mailto:sage [2015/01/04(日) 13:29:23.35 ID:TMi+DxjA]
- テキスト形式で数値を羅列する場合は、該当地域の文化に設定されているMS ExcelがCSVとして正しく読み込める事、を条件としてるよ
VB6やC#/VBのFormat関数はデフォで小数点記号考慮してくれるけど、C++ではOS設定を見て自前処理だ
- 345 名前:デフォルトの名無しさん mailto:sage [2015/01/04(日) 13:31:24.47 ID:pqc5lw4y]
- どちらの表記法を使っているか分からないと
123,45 なら、何とか分かるけど 123.456 は小数なのか位取りなのか判断できないことになるね?
- 346 名前:デフォルトの名無しさん mailto:sage [2015/01/04(日) 13:39:40.70 ID:TMi+DxjA]
- ただFormat関数は、文化ニュートラル(実質アメリカン書式)を強制したいXML生成とか機器制御コマンドなんかではかえって迷惑だったりする
ThreadCultureをニュートラルにいちいち設定しないといけないし、あ、VB/C#の話ね
- 347 名前:デフォルトの名無しさん mailto:sage [2015/01/04(日) 13:41:50.88 ID:HIHn1oXx]
- >>346はどうしようもない馬鹿
C#でXMLを生成すんのに自前で変換すんなタコ
- 348 名前:デフォルトの名無しさん mailto:sage [2015/01/04(日) 14:41:25.06 ID:LHqo9g84]
- >>332
戻り値が bool で良ければ lexicographical_compare
- 349 名前:デフォルトの名無しさん mailto:sage [2015/01/04(日) 14:49:44.93 ID:cj3MqVPN]
- >>339
いやあってるよ 朝日らしく捏造ではなく誤用だという形で 本人も認めてるよ
- 350 名前:デフォルトの名無しさん [2015/01/04(日) 15:16:45.02 ID:WmAHCknd]
- >>348
これで出来ました >>334>>337>>338 お前らは本当に無能ですね
- 351 名前:デフォルトの名無しさん mailto:sage [2015/01/04(日) 15:25:04.85 ID:FkvmMkr7]
- >>348
へー こんなのあるんだ。 今までは長さの min() とって memcmp() してた。
- 352 名前:デフォルトの名無しさん [2015/01/04(日) 15:32:55.25 ID:UrD0d14K]
- 人を馬鹿だとか無能だとかいえるような
優秀な人がたくさん集まったスレッドなんですね
- 353 名前:デフォルトの名無しさん mailto:sage [2015/01/04(日) 15:40:14.36 ID:B3IvvgpA]
- この手の技術系スレは、自分は何もかも知り尽くした天才で周りは全て馬鹿、という態度で書いてる奴が時々居るのよ
- 354 名前:デフォルトの名無しさん mailto:sage [2015/01/04(日) 15:51:23.91 ID:VyogYpyR]
- 皆わかっているとは思うけど
>>348と>>351はQの自演だぞ
- 355 名前:デフォルトの名無しさん mailto:sage [2015/01/04(日) 18:54:03.72 ID:ZWEZbTe4]
- 2つの集合a,bがあったときにその和集合,差集合をつくってaにいれたいです
a = a - b; a = a + b; みたいな感じにしたいのですが 今だと,下みたいにやってます もっと簡潔にかけませんか? set<int> a = { 1, 2, 3, 4 }; set<int> b = { 3, 4, 5, 6 }; set<int> c; set_difference(a.begin(), a.end(), b.begin(), b.end(), inserter(c, c.end())); a.clear(); copy(c.begin(), c.end(), inserter(a, a.end())); for (int i : a) { cout << i << " "; } cout << endl;
- 356 名前:デフォルトの名無しさん mailto:sage [2015/01/04(日) 19:10:46.28 ID:FLoKSBkb]
- >>355
boost::range版ならset_difference(a, b, inserter(c, c.end()));と書ける。 あとはa.swap(c);としたほうが簡単速い。 これ以上短くしたいなら関数にまとめる。
- 357 名前:デフォルトの名無しさん mailto:sage [2015/01/04(日) 19:16:50.27 ID:L6fkGxZk]
- 集合クラス作って演算子オーバーロードしとくかなあ
ググりゃ転がってそう
- 358 名前:デフォルトの名無しさん mailto:sage [2015/01/04(日) 19:37:56.46 ID:VX3mvVTy]
- >>355
試してないけど、↓これじゃダメなの? for(int i; b) { a.erase(i); } // a = a - b a.insert(b.begin(), b.end()); // a = a + b
- 359 名前:デフォルトの名無しさん mailto:sage [2015/01/04(日) 20:06:04.40 ID:LHqo9g84]
- まんま std::set_difference と std::set_union なのでは…
これより簡潔にしたいなら自分でラッパーなり書くしかないと思うお…
- 360 名前:デフォルトの名無しさん mailto:sage [2015/01/04(日) 20:30:47.31 ID:LHqo9g84]
- ヒマだったから書いてみたお
コンテナを受け取るラッパー関数書くだけで意外とすっきりしたお https://ideone.com/YikJPu
- 361 名前:355 mailto:sage [2015/01/04(日) 20:58:50.58 ID:ZWEZbTe4]
- みなさんありがとうございます
競プロで書いているときにbeginとかendを書くのが大変だったので なにか楽な方法を探してました a.swap(c)とかa.insert(b.begin(), b.end())は全然思いつかなかったので参考になりました.使わせてもらいます とりあえず他のintersectionとかはラッパ書いて処理してみます ありがとうございました
- 362 名前:デフォルトの名無しさん mailto:sage [2015/01/04(日) 22:30:48.07 ID:kU4tFNpU]
- >>349
なるほど、確認した。半年前の話か‥
- 363 名前:デフォルトの名無しさん mailto:sage [2015/01/05(月) 22:33:25.30 ID:f33/Q9TD]
- 前スレにあったプライベート変数にアスセスするコードをようやく理解した。
ほぼコピペだが記念に貼っとく ideone.com/GVpGlQ
- 364 名前:デフォルトの名無しさん mailto:sage [2015/01/06(火) 01:36:28.96 ID:vDyOmCN+]
- 何でそんな事したいのか分からないけど、初期化時にポインタ受け取れば済むような
- 365 名前:デフォルトの名無しさん mailto:sage [2015/01/06(火) 14:33:17.28 ID:SaW7LnEX]
- C++のstd::listってガベージコレクションはしていないんですよね?
フラグメンテーション起こさないようにするためにはどっか別に固定領域を確保してそっからデータ持ってくるようにしないと ダメでしょうか?
- 366 名前:デフォルトの名無しさん mailto:sage [2015/01/06(火) 14:40:08.17 ID:C2mmH5Le]
- はい
- 367 名前:デフォルトの名無しさん mailto:sage [2015/01/06(火) 18:04:47.26 ID:22vat4md]
- いえ、してますよ
マークアンドスイープ方式のガベージコレクションをしてないだけで
- 368 名前:デフォルトの名無しさん mailto:sage [2015/01/06(火) 18:34:47.65 ID:0kbQZJFE]
- フラグメンテーションとGC直接関係ないし
- 369 名前:デフォルトの名無しさん mailto:sage [2015/01/06(火) 19:11:45.23 ID:XxVOSZ3z]
- コンパクション(メモリのデフラグ)も行うコピーGCのことを言っているんじゃないかと
しかし、時代はGCじゃないよねぇ。時代は参照カウントだよ。 C++11でも、shared_ptrが追加されたし。 シンタックスがどんどん汚くなっていくのはC++の悲しいところだな。
- 370 名前:デフォルトの名無しさん mailto:sage [2015/01/06(火) 19:24:03.99 ID:Ey7XFEeM]
- >時代は参照カウントだよ
へー、そいつは凄いな
- 371 名前:デフォルトの名無しさん mailto:sage [2015/01/06(火) 22:59:26.61 ID:Y26C2d1q]
- そういや、shared_ptr ってオブジェクトレベルでマルチスレッド対応してるんかな?
- 372 名前:デフォルトの名無しさん [2015/01/06(火) 23:01:02.23 ID:a1JT3SDg]
- >>242
遅くなりましたがあなたのお陰で解決しました。ありがとうございます!
- 373 名前:デフォルトの名無しさん mailto:sage [2015/01/06(火) 23:11:59.71 ID:Z2lMmRuz]
- >>371
標準ライブラリは「constメンバ関数=マルチスレッド対応」で統一していたはずだが
- 374 名前:デフォルトの名無しさん mailto:sage [2015/01/06(火) 23:53:02.99 ID:kiKfNKwr]
- >>369
シンタックスそんなに汚いかなあ、C++11
- 375 名前:デフォルトの名無しさん mailto:sage [2015/01/07(水) 00:17:19.84 ID:Y9yyLQNc]
- >>373
じゃあ、コピーコンストラクタや代入演算子はダメなのかねー。 スマポの魅力半減。 昔、参照カウンタ方式のstringでエライ痛い目みたからなー…
- 376 名前:デフォルトの名無しさん mailto:sage [2015/01/07(水) 00:20:45.94 ID:A8Vu2ukb]
- >>375
代入はだめだろ けどコピーコンストラクタは、仮にもコンストラクタだし、オブジェクトを構築してるスレッド以外から手の触れようがないと思うが
- 377 名前:デフォルトの名無しさん mailto:sage [2015/01/07(水) 00:23:58.83 ID:J9Js0gVS]
- shared_ptr自体はマルチスレッドに対応してるだろ
マルチスレッドでどれだけ参照を増やそうが減らそうがdeleteされなかったり2重deleteしたりしない
- 378 名前:デフォルトの名無しさん mailto:sage [2015/01/07(水) 07:10:13.57 ID:Re9e7Fnn]
- それは君の環境で「自分で同期したら問題なく動いた」ってだけでは?
- 379 名前:デフォルトの名無しさん mailto:sage [2015/01/07(水) 09:05:13.51 ID:DkZd7T6D]
- 異なるshared_ptrに対する操作ならデータ競合を起こさないことが保証されてるよ
ttp://faithandbrave.hateblo.jp/entry/20130328/1364463249 同じshared_ptrに対する更新などの操作をデータ競合を発生させずに行うためのものも提供されてる ttp://en.cppreference.com/w/cpp/memory/shared_ptr/atomic
- 380 名前:デフォルトの名無しさん mailto:sage [2015/01/07(水) 09:13:45.90 ID:v+HQiVT1]
- WinのInterlickedExchage関数, QtのQAtomicIntみたいなもんか
型がTなのでより進化してるけど
- 381 名前:デフォルトの名無しさん mailto:sage [2015/01/07(水) 13:47:42.98 ID:rq5tkzs4]
- >>379
それと所有するオブジェクト自体を複数のスレッドから操作する場合はmutexが必要になると。
|

|