[表示 : 全て 最新50 1-99 101- 201- 301- 2chのread.cgiへ]
Update time : 01/07 16:29 / Filesize : 90 KB / Number-of Response : 382
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


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

C++相談室 part115 [転載禁止]©2ch.net



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が必要になると。






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

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

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