- 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/
- 259 名前:デフォルトの名無しさん mailto:sage [2014/12/29(月) 22:42:34.36 ID:eLFvzmg+]
- mutableとかconst_castとか使わなくて済むように、基底のところではちゃんとconstを付けろ。
具体的には、ODBCのAPIとか、引数がconst SQLCHAR*じゃなくてSQLCHAR*になっているせいで ユーザーコードの側でmutableとかconst_castを使うはめになってるだろ? そういうのやめてほしいんだよ。 (詳細忘れたので名前間違ってるかも試練)
- 260 名前:デフォルトの名無しさん mailto:sage [2014/12/29(月) 23:34:37.63 ID:sxuLeXgN]
- >>259
>ユーザーコードの側でmutableとかconst_castを使うはめになってるだろ ライブラリが糞なためにconst_castが必要になることはあるが mutableを使うのは何かおかしくね? mutableなんて自分がクラスを定義する時に ミューテックスかキャッシュに使う奴だろ
- 261 名前:デフォルトの名無しさん mailto:sage [2014/12/29(月) 23:43:22.44 ID:NcjyMXWK]
- >>260
ライブラリが糞なときはどっちかというと一時バッファにコピーして渡すほうを選ぶわ 例外出しちゃダメとかだとこれはこれで面倒だけど 糞ゆえに実際ほんとに書き換えてるかもしれんもの。
- 262 名前:デフォルトの名無しさん mailto:sage [2014/12/29(月) 23:51:02.54 ID:NJRVwBPj]
- C/C++はmain関数からして糞だから細かいこと気にしてると禿げるぞ。
mainはいい加減に int main(int argc, char const *const *argv) を許すべき
- 263 名前:デフォルトの名無しさん mailto:sage [2014/12/30(火) 00:11:34.57 ID:/MaaffoK]
- >>261
俺もそうしてる。
- 264 名前:デフォルトの名無しさん mailto:sage [2014/12/30(火) 00:15:55.66 ID:jrN3+PoU]
- >>260-263
あんたらの言う通りだ。 オレが言いたかったことはわかってくれ。
- 265 名前:デフォルトの名無しさん mailto:sage [2014/12/30(火) 00:16:13.97 ID:39ECbyHQ]
- >>258
どんなコードを生成するかは、他にも条件がある。
- 266 名前:デフォルトの名無しさん mailto:sage [2014/12/30(火) 01:44:21.10 ID:1zc8xpv9]
- >>262
普段からint main(int argc, const char argv[])って書いてるけど問題あるの?
- 267 名前:デフォルトの名無しさん mailto:sage [2014/12/30(火) 03:57:45.78 ID:SbfdzLBU]
- >>266
それだと値はread-onlyだけどポインタは変更可能になっちゃう 俺はそれを「頭隠して尻かくさず」と今から呼ぶ
- 268 名前:デフォルトの名無しさん mailto:sage [2014/12/30(火) 04:21:16.22 ID:iV8mgJ7+]
- >>266
1 規格上保証されていない 2 互換性の無い型を使うな const char **v = (char **)argv; //エラー const char *const *v = (char **)argv; // OK
- 269 名前: ◆QZaw55cn4c mailto:sage [2014/12/30(火) 04:23:36.15 ID:i+30FOkq]
- でも argv を書き換えてどうこうする、というコードはあたりまえにあるからな‥
- 270 名前:デフォルトの名無しさん mailto:sage [2014/12/30(火) 04:31:43.65 ID:iV8mgJ7+]
- 1 型を変えるんじゃなくてconst版も許可したいという話だろ?
2 argvを書き換える糞ソースはあるが *argvや**argvを書き換える糞ソースはそんなにはないだろう
- 271 名前:デフォルトの名無しさん mailto:sage [2014/12/30(火) 04:32:54.78 ID:PFdyrfgS]
- 与えられたコマンドライン引数をある規則に従ってすり替える、って話だな
- 272 名前:デフォルトの名無しさん mailto:sage [2014/12/30(火) 04:37:41.94 ID:iV8mgJ7+]
- >>271
そんなのは int main(int argv, char *argv[]) { 魔改造(&argc, &argv);//この膣内でnew } でいいんじゃないの
- 273 名前:デフォルトの名無しさん mailto:sage [2014/12/30(火) 06:56:59.46 ID:f6h/n6k9]
- strtokで空白->null文字に置き換えて処理するのはよく見
長さ変えず処理すればおk
- 274 名前:デフォルトの名無しさん mailto:sage [2014/12/31(水) 00:24:27.07 ID:oy55ZnpW]
- UTF-16/8の併走が確実になった時点でLua規模のインタプリタを規格に取り込んで文字操作と入出力を任せてしまえばよかったんだけどな
- 275 名前:デフォルトの名無しさん mailto:sage [2014/12/31(水) 01:23:52.12 ID:n+VO5zpK]
- >>274
C++で文字操作に困ってないんだけど、Lua入れたら何が嬉しいの?
- 276 名前:デフォルトの名無しさん mailto:sage [2014/12/31(水) 02:34:12.62 ID:6T3zfuUi]
- コピー禁止のクラスを作る場合、C++11時代でもboost::noncopyableを使うのが一番手っ取り早いの?
- 277 名前:デフォルトの名無しさん mailto:sage [2014/12/31(水) 02:36:25.59 ID:Imw1KDaA]
- =deleteでいいだろ
- 278 名前:デフォルトの名無しさん mailto:sage [2014/12/31(水) 02:48:58.93 ID:n+VO5zpK]
- 03時代も2〜3行ほど追加するだけなのにわざわざboost使うまでもないよね。
- 279 名前:デフォルトの名無しさん mailto:sage [2014/12/31(水) 06:55:38.56 ID:cgqKf6SH]
- >>276
暗黙生成のルールは複雑だから4つ書いとけ struct unko { unko(unko const &)=delete; unko(unko &&)=delete; void operator=(unko const &)=delete; void operator=(unko &&)=delete; } まさにボイラープレートとはこのことだ
- 280 名前:デフォルトの名無しさん mailto:sage [2014/12/31(水) 23:32:45.41 ID:7bpGH/R+]
- -=・=- -=・=- ;
- 281 名前:デフォルトの名無しさん mailto:sage [2015/01/01(木) 21:34:36.43 ID:n3V4qFhd]
- A、B、C、Dの4つのクラスがあって
これらのインスタンスの合計が200以下になるように管理したいのですが 200×4を初めに確保してexistFlagなどで管理するべきか 200を越えないようにnew deleteするべきか どちらが良いでしょうか
- 282 名前:デフォルトの名無しさん mailto:sage [2015/01/01(木) 21:47:31.22 ID:JXjPsVlJ]
- >>281
後者ができるなら前者にするメリットがわからないのだが
- 283 名前:デフォルトの名無しさん [2015/01/01(木) 21:58:47.29 ID:aUgqaYf8]
- 四つのクラスのスーパークラスを作ってスーパークラスのリストで管理
- 284 名前:デフォルトの名無しさん mailto:sage [2015/01/01(木) 22:04:39.02 ID:c7lZY8p6]
- 4つのクラスを整理して総合した1つのクラスを作る
- 285 名前:デフォルトの名無しさん mailto:sage [2015/01/01(木) 22:09:10.05 ID:TPRv8yF2]
- 毎回確保してたりしたら重くなるとかそういうのきいてんじゃね
- 286 名前:デフォルトの名無しさん mailto:sage [2015/01/01(木) 22:14:47.34 ID:A86JtUaP]
- そんなのそこがボトルネックになってから考えるべき。
早すぎる最適化はダメって昔から言われてるだろ
- 287 名前:デフォルトの名無しさん mailto:sage [2015/01/01(木) 22:15:33.05 ID:UD8gY9kq]
- union { A; B; C; D} の配列 [200]
- 288 名前:デフォルトの名無しさん mailto:sage [2015/01/01(木) 22:16:04.26 ID:fLF7bH9Q]
- もし生成消滅を1秒間に10万回ぐらい行うプログラムなら
ABCDのunionのメモリを200個静的に確保して カスタムアロケーターで管理だな。 だが素人にはオススメできない。
- 289 名前:デフォルトの名無しさん mailto:sage [2015/01/01(木) 23:28:17.98 ID:5bVQoG0Q]
- placement new
- 290 名前:デフォルトの名無しさん mailto:sage [2015/01/01(木) 23:57:28.12 ID:flJTiBeb]
- メモリの確保でc++はnewって初心者向けのサイトにあるけど、
実際業務で扱う場合はnewではなくてスマートポインタが当たり前だったりする?
- 291 名前:デフォルトの名無しさん mailto:sage [2015/01/02(金) 01:01:42.01 ID:jkIjgD0V]
- そもそもvectorとか使えたらそっちの方が断然楽だろ
- 292 名前:デフォルトの名無しさん mailto:sage [2015/01/02(金) 01:43:11.89 ID:7+k4tJMb]
- >>282-291
ありがとうございます vector+スーパークラスのスマートポインタでインスタンスを管理することに決めました もう一つ質問なのですが Controlerクラスが、A,B,C,D4つの派生元であるスーパークラスSのスマートポインタのvectorを持っているとして Controlerがあるインスタンスを実行中にそのインスタンスからBのインスタンスを作りたいとなったとき インスタンスを作成できるのはポインタを持っているControlerなので、Controlerに確保する関数を作って Controlerの参照をインスタンスに渡して確保する関数を実行するということになるのでしょうか? これだと呼び出し先が呼び出し元を呼び出して何か違う気がしました
- 293 名前:デフォルトの名無しさん mailto:sage [2015/01/02(金) 08:18:56.48 ID:2SopZcG5]
- >>292
インスタンスの所属に関する良くある問題だと思う。 あなたの用途には当てはまらないかもしれないが、複数のControllerが存在し得て、 それぞれが200個までのA,B,C,Dを持てる場合には、どういう設計になるだろうか? Controllerがシングルトンなのであれば、それを取得するグローバル変数 or 関数を 用意すれば、Controllerを引き回さなくて済むだろう。
- 294 名前:デフォルトの名無しさん mailto:sage [2015/01/02(金) 10:19:55.57 ID:6s3QU+2U]
- >>292
Controllerクラス(l一個多い?)が確保してるインスタンスをループで逐次実行するような作りなのかな? 引数で渡すか、インスタンスに変数で持たせるか、シングルトンやグローバル変数でアクセスするかってところだな
- 295 名前:デフォルトの名無しさん mailto:sage [2015/01/02(金) 12:35:01.81 ID:F7Nf/+TC]
- >>290
newかスマートポインタか、という比較は意味不明だな newはメモリの獲得方法、スマートポインタはその開放忘れを防ぐ仕組みを持つ型の事だろ
- 296 名前:デフォルトの名無しさん mailto:sage [2015/01/02(金) 12:52:35.55 ID:5Yq30nMG]
- make_shared とか
- 297 名前:デフォルトの名無しさん mailto:sage [2015/01/02(金) 13:15:09.87 ID:7+k4tJMb]
- >>293-294
Controllerは実質シングルトンなのでアクセスさせる関数をグローバルに用意することにしました ありがとうございます
- 298 名前:デフォルトの名無しさん mailto:sage [2015/01/02(金) 13:24:49.90 ID:4efdvCq8]
- vector<int> v = {1,2,3};
for_each(v.begin(),v.end(),[](int& n){ n *= 3; }); for_each(v.begin(),v.end(),[](int n){ cout << n << endl; }); このfor_eachの[](int& n)や[](int n)の部分がよくわからないです。 なんで( )の前に[ ]がつくのか、参照で値を渡してるのか渡してない時もあるのか。 たまに[&]な時もあったり、とにかくfor_eachがよく分からないので教えて下さい・・・
- 299 名前:デフォルトの名無しさん mailto:sage [2015/01/02(金) 13:34:12.89 ID:zzU87XUx]
- ラムダ式
- 300 名前:デフォルトの名無しさん [2015/01/02(金) 13:46:21.12 ID:7JlS4zBv]
- TCHAR InfFile[MAX_PATH];
get_inf_file(InfFile); // ←ここでInfFileにファイル名が入る。 _tprintf(_T("%s\n"), InfFile); // 文字化けする。 printf("%s\n", InfFile); // 文字化けしない。 誰かが作ったget_inf_file(TCHAR * InfFile)という関数があり、実行すると _tprintfで表示すると文字化けして、printfだと文字化けしないのですが 意味がわかりません。TCHARなのだから_tprintfを使うのではないのでしょうか 実際にこの関数を使わないで文字リテラルを指定すると文字化けしません。
- 301 名前:デフォルトの名無しさん mailto:sage [2015/01/02(金) 13:50:58.27 ID:A83rtBgH]
- >>300
Visual C++と理解したけど #include <clocale> #include <tchar.h> _tsetlocale(LC_CTYPE, _T("")); しても文字化けする?
- 302 名前:デフォルトの名無しさん [2015/01/02(金) 13:56:47.60 ID:7JlS4zBv]
- >>301
文字化けします。 _tsetlocale(LC_ALL, _T("Japanese_Japan.932"));を指定してたのを_tsetlocale(LC_CTYPE, _T("")); にしました
- 303 名前:デフォルトの名無しさん mailto:sage [2015/01/02(金) 14:01:08.04 ID:7UbCEqjn]
- TCHARと_tprintfが一致してることは確認済み?
- 304 名前:デフォルトの名無しさん mailto:sage [2015/01/02(金) 14:06:48.36 ID:A83rtBgH]
- >>302
ならget_inf_fileがおかしいんだろう。 UnicodeビルドでUTF-16が入るべき所に シフトジスが入ってるとみた。 printf("%04X", InfFile[0]&0xffff) が二桁になってるだろ?
- 305 名前:デフォルトの名無しさん mailto:sage [2015/01/02(金) 14:12:02.67 ID:F7Nf/+TC]
- だな、誰かが作ったというget_inf_fileの充填結果が、こちらの期待する文字列エンコードと合致してないんだよ
- 306 名前:デフォルトの名無しさん mailto:sage [2015/01/02(金) 14:33:20.81 ID:7JlS4zBv]
- >>304-305
まじっすか、そんなこともあるんですね 作ったのが外人なので、なかなか直してももらえないと思うのですが 変換とかできるのでしょうか、VSだとコンパイル時にシンタックスエラーになるのですが
- 307 名前:デフォルトの名無しさん mailto:sage [2015/01/02(金) 14:45:56.25 ID:F7Nf/+TC]
- >>306
まず、自分のプロジェクトはunicodeなのかansiなのか 関数が充填したパス文字列は、バイト配列としての中身がunicode文字列なのかansi文字列なのか
- 308 名前:デフォルトの名無しさん mailto:sage [2015/01/02(金) 14:48:01.53 ID:9E+XPI9z]
- >>300
要するに、 get_inf_file(char * InfFile) 実際にはこういう定義で、マルチバイト固定で作られてるので 自アプリがUnicodeビルドならUnicodeに文字コード変換する処理を かましてやればいい
- 309 名前:デフォルトの名無しさん mailto:sage [2015/01/02(金) 14:54:46.06 ID:7JlS4zBv]
- >>307-308
なるほど 英語圏の人はそこらへんいいかげんなのかもしれませんね やってみます
- 310 名前:デフォルトの名無しさん mailto:sage [2015/01/02(金) 16:51:47.96 ID:F7Nf/+TC]
- アメリカ人は特に国際的意識が低いから、unicodeなんてどうでもいい存在だと思ってる
世界中の物の単位がインチやマイル、ポンド、華氏、だと思ってるしそれを外国人に押し付けてくる
- 311 名前:デフォルトの名無しさん mailto:sage [2015/01/02(金) 17:11:39.19 ID:2SopZcG5]
- でも日本人はlocaleやタイムゾーンに無関心なんだよな。
桁区切りはカンマ、小数点はピリオドだと思い込んでるし、tm_isdstの確認もしない。
- 312 名前:デフォルトの名無しさん mailto:sage [2015/01/02(金) 17:53:40.11 ID:SdwiTPDP]
- 小数点にカンマを使う文化圏の人達にとってはソースコードが違和感だらけなんだろうなぁ
いずれ慣れるんだろうけど
- 313 名前:デフォルトの名無しさん mailto:sage [2015/01/02(金) 18:10:23.94 ID:F7Nf/+TC]
- >>312
ソース書く人は開発者の端くれだから、C/C++ソースが米国文化をデフォルトとするのはそう言うものだとおもってたんじゃないかな 数値や年月日書式はOSやライブラリでも面倒見てくれたし
- 314 名前:デフォルトの名無しさん mailto:sage [2015/01/02(金) 18:21:32.55 ID:lBKtUQs0]
- カンマは4桁ごとにして欲しい
- 315 名前:デフォルトの名無しさん mailto:sage [2015/01/02(金) 18:31:24.40 ID:U8M1VAWr]
- >314
本多勝一さんが、ずっと前からそう主張されて いますね。わたしも同感です。 日本語の記数法からいって、4桁が合うと思います
- 316 名前:デフォルトの名無しさん mailto:sage [2015/01/02(金) 20:04:31.50 ID:mlj15zVW]
- >>315
日本語ではね 英語圏ではサウザンド、ミリオン、ビリオンの世界だから3桁がいいんだろうけど
- 317 名前:デフォルトの名無しさん mailto:sage [2015/01/02(金) 20:15:50.21 ID:buPBY5a2]
- >>315
日本では確かに4桁の方がわかりやすいけど、 混同しないように別の記号にした方がよさそうだね。
- 318 名前:デフォルトの名無しさん [2015/01/03(土) 00:43:47.56 ID:/WOuYfDa]
- 大体、英米の鬼畜野郎どもは、「グローバルスタンダード」といってる癖に
SI単位使わないじゃあねえか。 いつまで、インチ、フット、ポンド使うつもりなんだ! liars!
- 319 名前:デフォルトの名無しさん mailto:sage [2015/01/03(土) 00:48:50.05 ID:4e+tzVBF]
- 敗戦国=奴隷ッスカラネ
シャネッス
- 320 名前:デフォルトの名無しさん mailto:sage [2015/01/03(土) 00:56:34.82 ID:Z3HMQ9o8]
- >>319
日本に対してだけではない アメリカ人は世界中がアメリカと同じ文化で生活してると思ってる
- 321 名前:デフォルトの名無しさん mailto:sage [2015/01/03(土) 01:15:07.40 ID:kbrpwiZV]
- インドでは最初だけ四桁、後はずっと二桁区切り
- 322 名前:デフォルトの名無しさん mailto:sage [2015/01/03(土) 02:15:38.61 ID:2MH2vTPI]
- アメリカはまだマシな方
イギリス人の頭の古さには脱帽する イギリス=後進国
- 323 名前:デフォルトの名無しさん mailto:sage [2015/01/03(土) 02:18:41.65 ID:AuGuhWCh]
- イギリスは世界を征服してた事があるから、そりゃ過去が忘れられんだろうね
- 324 名前:デフォルトの名無しさん mailto:sage [2015/01/03(土) 02:23:04.51 ID:AuGuhWCh]
- 日本語はコンピューターには向かない言語だと言わざるを得ない
逆に英語はコンピューターに向いてる
- 325 名前:デフォルトの名無しさん mailto:sage [2015/01/03(土) 02:57:12.14 ID:kbrpwiZV]
- 日本語は逆ポーランド記法によりコンピューターに向く言語だと言わざるを得ない。
と思っていた時期もあったような
- 326 名前:デフォルトの名無しさん mailto:sage [2015/01/03(土) 03:03:05.64 ID:pcdNaXmh]
- >>324
www.entis.jp/doc/japanese/
- 327 名前:デフォルトの名無しさん mailto:sage [2015/01/03(土) 03:26:48.71 ID:AuGuhWCh]
- >>326
つうか文法を全く説明してないしw まじめにやったら結構大変な分野だろうけど
- 328 名前:デフォルトの名無しさん mailto:sage [2015/01/03(土) 04:37:47.93 ID:UGnRQrnS]
- std::vectorの要素を番号を指定してeraseすることって出来ませんか?
- 329 名前:デフォルトの名無しさん mailto:sage [2015/01/03(土) 04:40:19.30 ID:Cj8CgFQv]
- begin() + indexで消せる
- 330 名前:デフォルトの名無しさん mailto:sage [2015/01/03(土) 04:41:53.98 ID:UGnRQrnS]
- ありがとうございます
そんな簡単だったんですね
- 331 名前:デフォルトの名無しさん mailto:sage [2015/01/03(土) 23:18:32.07 ID:Mi3y7m+B]
- >>318
でも、SI単位系だと3桁区切りなんだよなぁ
- 332 名前:デフォルトの名無しさん [2015/01/04(日) 00:28:41.62 ID:WmAHCknd]
- const char hoge[] = "abcdefghijk";
const char* const first0 = &hoge[ 0 ]; const char* const last0 = &hoge[ 3 ]; const char* const first1 = &hoge[ 5 ]; const char* const last1 = &hoge[ 9 ]; strcmp???( first0, last0, first1, last1 ); こんな感じで二組の文字列の範囲から辞書順比較する方法おしえてください
- 333 名前: ◆QZaw55cn4c mailto:sage [2015/01/04(日) 00:50:49.32 ID:kU4tFNpU]
- >>315
本多勝一氏か‥ 懐かしい名前だね‥ 氏の「日本語の作文文法」の特に読点に関する考察はなかなか示唆に富むものだったが‥ しかし、あの体臭はどうにかならんかねえ‥ポルポトを擁護したという過去は忘れてあげるからさあ‥
- 334 名前:デフォルトの名無しさん mailto:sage [2015/01/04(日) 01:14:59.66 ID:JaJcpRWI]
- >>332
自分でコードを書く 以上
- 335 名前:デフォルトの名無しさん [2015/01/04(日) 01:16:25.64 ID:WmAHCknd]
- >>334
そういうのは別にいらないので消えてください
- 336 名前:デフォルトの名無しさん mailto:sage [2015/01/04(日) 01:25:27.23 ID:cj3MqVPN]
- > 本多勝一氏か‥
写真捏造の人だよね
- 337 名前:デフォルトの名無しさん mailto:sage [2015/01/04(日) 01:30:12.10 ID:0uOcaWII]
- >>332
質問の意味がよくわからん
- 338 名前:デフォルトの名無しさん mailto:sage [2015/01/04(日) 08:35:31.27 ID:99+RPTin]
- コピーせずに処理したい→string_view自作しろ
比較アルゴリズムをしたい→スレ違いだ ライブラリありませんか→ねーよ
- 339 名前: ◆QZaw55cn4c mailto:sage [2015/01/04(日) 13:01:12.49 ID:kU4tFNpU]
- >>336
それは違うね‥
- 340 名前:デフォルトの名無しさん mailto:sage [2015/01/04(日) 13:09:46.78 ID:+b+eo/V4]
- フランスではカンマとピリオドの使い方逆なんだよな
それも規格でどっちでもいいことになってて結構あいまいさ残ってる あとlong scale、short scaleアジア圏でも万進、万万進、ベトナム式下数とか数の問題は複雑
- 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が必要になると。
|

|