1 名前:デフォルトの名無しさん mailto:sage [2014/10/05(日) 16:53:48.48 ID:4FShMSYH] エスケープシーケンスやWin32APIなどの環境依存なものでもOK。 ただしその場合、質問者は必ず環境を書きましょう。 ※sage禁止です(と代々スレに書いてありますが自己判断で)。 ◆ソースのインデントについて 半角空白やTABでのインデントはスレに貼ると無くなります。 そのため、アップローダーに上げるのも手ですが直接貼る場合は、 全角空白か に置換すると見栄えだけはよくなります。 前スレ 【初心者歓迎】C/C++室 Ver.92【環境依存OK】 peace.2ch.net/test/read.cgi/tech/1406801653/ 【アップローダー】(質問が長い時はココ使うと便利) codepad.org/ (コンパイルもできるし出力結果も得られる[]privateをチェック) ideone.com/ (時間帯によってはcodepadが重い事があるのでここも利用)
2 名前:デフォルトの名無しさん mailto:sage [2014/10/05(日) 16:56:04.71 ID:4FShMSYH] テンプレここまで
3 名前:デフォルトの名無しさん [2014/10/05(日) 16:57:29.04 ID:a6/ySe32] ノ ゚.ノヽ , /} ... ,,イ`" 、-' `;_' ' ..::::::::::::::... ,-、 _.._ ( (,(~ヽ'~ ..::::::::::::::::::::::: )'~ レー' 〉 ヽ i`'} .::::::::::::::::::::::: ~つ '-ー、 i | i' ...::::::::::::::::::::::: / < / 。/ ! ......::::::::::::::::::::::::: これは>>1 乙じゃなくて / ~^´ /},-'' ,●:::::::::::::::::::::::::::::::::::: i、 ,i' _,,...,-‐-、/ i :::::::: .::::::::::::: ..ゝ <,,-==、 ,,-,/ .::::::::::: 放射能がうんたら ) {~''~>`v-''`ー゙`'~ ..::::::::: ........::. { レ_ノ ..::::::::. ......::::::::: ノ '' ..::::::: ...::.:...::::::::: .::::::::: ...:......:::::::::::: . .:::::::::::. ..... .. ..:::::::::::::::::::::::: :::. ::::::::::::::::.::::::....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.. :: ::.. .:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::: ::. ::::::::::::::::: :::::::::::::::::::::::::::::: ::::: .:: ::. :::
4 名前:デフォルトの名無しさん mailto:sage [2014/10/06(月) 03:55:59.30 ID:PopA18EU] クラスのメンバ変数にstd::unique_ptrを用意したら 変数が開放されるタイミングっていつでしょうか 変なことを聞いていたらすいません
5 名前:デフォルトの名無しさん mailto:sage [2014/10/06(月) 04:03:08.69 ID:HfILY2kH] デストラクタ
6 名前:デフォルトの名無しさん mailto:sage [2014/10/06(月) 04:12:44.45 ID:PopA18EU] >>5 ありがとうございます!
7 名前:デフォルトの名無しさん mailto:sage [2014/10/06(月) 04:56:27.02 ID:PopA18EU] 先日、listでオーバーライドがしたいと 質問させて頂いた折に >>std::list<抽象クラス*> list; >>list.push_back(new 派生クラス); >>ならできる >>できるけど入れるのはunique_ptrにしとけよ >>std::list<std::unique_ptr<base>> と教えて頂いたので std::list<std::unique_ptr<Base>> base_list; base_list;.push_back( new 派生クラス ); としたのですが、 オーバーロードされた関数 "std::list<_Ty, _Alloc>::push_back [代入_Ty=std::unique_ptr<Base, std::default_delete<Base>>, _Alloc=std::allocator<std::unique_ptr<Base, std::default_delete<Base>>>]" のインスタンスが引数リストと一致しません 引数の型: (派生クラス *) と出て格納できません... 単純に引数の型が違うぞ ということだとは分かるのですが これだと派生クラスを格納できないです... 何が間違っているのか教えていただけると幸いです。 よろしくお願いします。
8 名前:デフォルトの名無しさん mailto:sage [2014/10/06(月) 05:06:35.25 ID:HfILY2kH] base_list.emplace_back これでおk
9 名前:デフォルトの名無しさん mailto:sage [2014/10/06(月) 06:59:01.31 ID:GjS8ijKL] >>7 >>できるけど入れるのはunique_ptrにしとけよ >>std::list<std::unique_ptr<base>> コレかいたのは俺だけど list.push_back( std::unique_ptr<base>{new 派生クラス} ); こうやって入れる
10 名前:デフォルトの名無しさん mailto:sage [2014/10/06(月) 14:23:22.88 ID:GyuMcj/U] uniqeptrのweakptrってありますか?
11 名前:デフォルトの名無しさん mailto:sage [2014/10/06(月) 15:28:04.08 ID:PopA18EU] >>8 調べてみたところ、コンテナ内でで生成する分コピーのコストが省かれるとか... しかもコードも簡潔になりますね。 便利ですね >>9 なるほど unique_ptrとして格納しないといけない という事ですかね... 考えてみれば当たり前ですね... この場合、>>8 さんと >>9 さん どちらの書き方の方が良いのでしょうか
12 名前:デフォルトの名無しさん mailto:sage [2014/10/06(月) 18:01:21.24 ID:hlfW/IbB] >>10 unique_ptrがどういうものか解ってないようだからshared_ptr使っとけ
13 名前:デフォルトの名無しさん mailto:sage [2014/10/08(水) 17:27:39.42 ID:vTZNrayY] あるvectorを複数のクラス間で共有して どのクラスからでも値を変えたいとした時に 先頭のイテレータを渡すという方法は正しいですです?
14 名前:デフォルトの名無しさん mailto:sage [2014/10/08(水) 17:37:18.69 ID:i3wuFRlZ] >>13 固定長として扱うならおk、 その場合はstd::arrayの方が型で説明できるからそうしたいけど。 要素の追加・削除をするならNG
15 名前:デフォルトの名無しさん mailto:sage [2014/10/08(水) 17:41:04.20 ID:umcRRgPC] >>13 ダメ。誰かが追加を行なった瞬間にそのイテレータは無効になる。 つーか、なんでvectorの参照を渡さないの?
16 名前:デフォルトの名無しさん mailto:sage [2014/10/08(水) 18:11:45.18 ID:vTZNrayY] 追加・削除したいです 参照渡しだと先頭アドレスを渡せるんですかね そこからイテレータを作ってという形になるんですかね 理解しきれてないです ごめんなさい
17 名前:デフォルトの名無しさん mailto:sage [2014/10/08(水) 18:23:20.82 ID:umcRRgPC] void someFunc(std::vector<someType> & vec) { for (auto it = vec.begin(); it != vec.end(); ++it) { someSequence(); } } std::vector<someType> vec; someFunc(vec);
18 名前:デフォルトの名無しさん mailto:sage [2014/10/08(水) 19:56:45.01 ID:vTZNrayY] >>17 ありがとうございますです これは先頭のアドレスのみを渡しているという認識でいいですかね
19 名前:デフォルトの名無しさん mailto:sage [2014/10/08(水) 20:21:10.60 ID:Mr3CuVyx] void someFunc(std::vector<someType> * vec) { for (auto it = vec.begin(); it != vec.end(); ++it) { someSequence(); } } std::vector<someType> vec; someFunc(&vec); こうならわかるかな・・・
20 名前:デフォルトの名無しさん mailto:sage [2014/10/08(水) 20:35:43.38 ID:Msp0R78m] >>19 間違ったコードは逆に混乱するからNG
21 名前:デフォルトの名無しさん mailto:sage [2014/10/08(水) 20:51:26.83 ID:vTZNrayY] すいませんポインタなのか参照なのかでしか分からないです あと>>19 は間違っているのですか?
22 名前:デフォルトの名無しさん mailto:sage [2014/10/08(水) 21:07:58.15 ID:udc9ZQ+p] >>21 ポインタも参照もわかってねーじゃねーか
23 名前:デフォルトの名無しさん mailto:sage [2014/10/08(水) 21:10:37.56 ID:Msp0R78m] Cの構造体とそのポインタを勉強し、 構造体のメンバー変数に、ポインタがある場合を考えるべし
24 名前:デフォルトの名無しさん mailto:sage [2014/10/08(水) 21:51:34.97 ID:Ltx3TZMZ] とりあえずそんな程度なら設定が悪い そもそも異なるクラスからっていうのはプロセス跨ぐのかスレッド跨ぐのか同一スコープ内なのか前提条件なさすぎて答えられなくね?
25 名前:デフォルトの名無しさん mailto:sage [2014/10/08(水) 21:52:47.28 ID:Ltx3TZMZ] >>24 設定× 設計。
26 名前:デフォルトの名無しさん mailto:sage [2014/10/08(水) 23:05:51.56 ID:Mr3CuVyx] >>20 ああドット演算子をアロー演算子に直すの忘れてたわ
27 名前:デフォルトの名無しさん mailto:sage [2014/10/09(木) 16:56:41.56 ID:yBrUft/K] 値渡しとポインタ渡しと参照の違いはわかりますか?
28 名前:デフォルトの名無しさん mailto:sage [2014/10/09(木) 16:59:56.78 ID:XWUcutqt] 分かります
29 名前:デフォルトの名無しさん mailto:sage [2014/10/09(木) 18:12:51.93 ID:EHl7htGY] Windowsです。 NODEFAULTLIB状態でitoaを使いたいです。 ntdll.dllの_itoa関数を暗黙的インポートしたいのですが 「error C2375: '_itoa' : 再定義されています。異なるリンケージです。」 とでて出来ません。 明示的に別名の関数としてインポートするしかないのでしょうか?
30 名前:デフォルトの名無しさん mailto:sage [2014/10/10(金) 03:06:13.85 ID:Sl2wbznm] いいえ、そんなことはありません。 ちなみにコンパイラーのエラーのようなので NODEFAULTLIBとは関係ないでしょう。
31 名前:デフォルトの名無しさん mailto:sage [2014/10/10(金) 05:15:45.39 ID:JlZ57FsU] windows.hを使わずに代替ヘッダファイルを用意するということでしょうか? 結局user32.dllのwsprintfで同じことができるようなのでそれで済ませることにしました。
32 名前:デフォルトの名無しさん mailto:sage [2014/10/12(日) 15:44:47.20 ID:8o33UJ2O] いつも思うんだけどifとelse ifとelseって 同列に見えないからソース見にくいよね? else if以下は条件式が右にずれてしまうし… いつもこう書いてるんだけど if(--------){ } else if(--------)-{ } else{ } これはこれでまとまり感がないし… なんかいい書き方ないですかね
33 名前:デフォルトの名無しさん mailto:sage [2014/10/12(日) 15:46:05.55 ID:8o33UJ2O] とにかく一番嫌いというか見にくいのが if(--------){ }else if(--------)-{ }else{ } これ。 コメント書きにくいしなぁ なんかないかなぁ…
34 名前:デフォルトの名無しさん mailto:sage [2014/10/12(日) 15:48:28.27 ID:vP4KqGkP] if (false) { } else if (=============) { } else if (~~~~~~~~~~~~~~~) { } else if (__________________) { }
35 名前:デフォルトの名無しさん mailto:sage [2014/10/12(日) 16:05:19.98 ID:n4H9xNXC] >>33 俺そのスタイルなんだけど、コメント書きにくいってのは何で?
36 名前:デフォルトの名無しさん mailto:sage [2014/10/12(日) 16:31:02.60 ID:K67PydJN] >>33 これが一番一般的で実際見やすくね? 変なところで切られたら 構造が把握しにくい。 何処かの条件に入ったら それ以降の条件を見ないのが if else if ...なのに
37 名前:デフォルトの名無しさん mailto:sage [2014/10/12(日) 16:43:02.41 ID:sBs95EDt] >>32 の形式で書いてる ただしifの閉じ波カッコの行とelseの行は必ず隣接させてる (コメント行も入れない。elseについてのコメントが必要ならelse句の開き波カッコの後ろに入れる) else ifのおさまりの悪さは俺も思うけど、諦めてそういう句として見るようにしてる
38 名前:デフォルトの名無しさん mailto:sage [2014/10/12(日) 16:47:37.65 ID:bfCObt5l] >>32 コメントも加えると、こういうことかな? // if の条件式についてのコメント if(--------){ // if 成立時に実行する内容のコメント } // else if の条件式についてのコメント else if(--------)-{ // else if の同 } // 非成立時のコメント? else{ // 同 }
39 名前:デフォルトの名無しさん mailto:sage [2014/10/12(日) 16:54:38.55 ID:sv4A2Uaz] >>33 俺もこれだな コメントは、 // ケース1 if(--------){ // ケース2 } else if(--------){ } else { // ケース3 } みたいな。
40 名前:デフォルトの名無しさん mailto:sage [2014/10/12(日) 16:57:56.67 ID:6GWa82oQ] else ifが大量に発生するようなコード設計を回避しようぜ…
41 名前:デフォルトの名無しさん mailto:sage [2014/10/12(日) 17:02:37.95 ID:K67PydJN] なんで?
42 名前:デフォルトの名無しさん mailto:sage [2014/10/12(日) 17:09:37.61 ID:K67PydJN] lispのcondみたいに書ける構文があれば 良いのだけど。
43 名前:デフォルトの名無しさん mailto:sage [2014/10/12(日) 17:30:09.51 ID:sBs95EDt] elseifが大量に出るのはよくない兆し、ってのは俺も聞いたことがあるけど そこでどんな理由が説明されていたか覚えてないな・・・ 今の俺自身の考えは (1) 処理のまとまりが長くなりすぎる if → else if → else if ... ってのが、ある意味一つの処理のまとまりとも取れるので それが長くなりすぎると全体の把握がしづらくなることがある 個人的には、else ifが2個ついていたら「どこまで続くんだこれ・・・」って不安になってくる 「1つの関数を大きくしすぎないようにする」と似たような考え方 (2) switchで書けるケースがある 一つの状態(変数)を軸にして分岐する場合はswitch文の方がすっきりすることがたまにある まあこれは安易に書き換えられないケースの方が多そうだけど (3) 付け焼刃的な実装になりがち(?) これは完全に俺自身の経験からくるもので万人に当てはまるものではないけど 「あ、このケース漏れてた。じゃelseifで補足しよう」的な考えが見えてしまって やっぱり「大丈夫ですかこのコード・・・」的な不安を覚える(たとえ自分が書いたコードでも)
44 名前:デフォルトの名無しさん mailto:sage [2014/10/12(日) 17:45:14.00 ID:K67PydJN] switchの制約が強すぎるんだよ。 本来単純なブロック構造で switchとにたようなロジックを if else if ...で書かせるから 無駄にわかりづらくなる。
45 名前:デフォルトの名無しさん mailto:sage [2014/10/12(日) 18:02:37.48 ID:6GWa82oQ] 複雑な条件分岐はバグのもと そんなスーパーメソッドは止めて適切に処理分割しよう 単純なものなら見難くはならないのでif elseそのものは否定しないけど、単純化したら三項演算子でよくね?ってケースになることも多い if elseよりもswitchのほうが良い最適化になることがある くらいかなー アジャイル正義とは言わないけど割と感覚的に共感できることは多いよ まあ実際の仕事だと変なコーディングルールやらでクソコードになっちゃってストレスマッハだけど
46 名前:デフォルトの名無しさん mailto:sage [2014/10/12(日) 18:12:11.59 ID:sv4A2Uaz] >>43 > 個人的には、else ifが2個ついていたら「どこまで続くんだこれ・・・」って不安になってくる 一目で把握できないなら、あなたの言うように... > 「1つの関数を大きくしすぎないようにする」 と同じで、適切に分割すればいいだけかと。 > (2) switchで書けるケースがある そりゃ書けるなら switch の方がいい。 > (3) 付け焼刃的な実装になりがち(?) 設計のやり方の問題でしょ? オブジェクト指向で条件分岐が頻出するのはおかしい(多態を使え)と言うのはあるけど、それと混同してない?
47 名前:デフォルトの名無しさん mailto:sage [2014/10/12(日) 18:23:03.27 ID:sBs95EDt] >>46 殆どはあなたの言う通りだと思う (3)については>>41 の「なんで?」に対する俺の意見のつもりだった まさに設計の問題 >>42 Lispのcondっぽく、というとこんな感じ?(exprに相当する部分が汚いけど許して) pastebin.com/7p6BDS9w
48 名前:デフォルトの名無しさん mailto:sage [2014/10/12(日) 18:26:08.42 ID:sBs95EDt] ごめん、>>47 で貼ったコード見直したらうまく動いてないや 忘れて(;´Д`)
49 名前:デフォルトの名無しさん mailto:sage [2014/10/13(月) 09:24:30.77 ID:0ktC7py0] これはどうかな for (int i=0; i<5; i++) { if (条件1 && i==0) { // 処理1 break; } if (条件2 && i==1) { // 処理2 break; } … if (条件4 && i==4) { // 処理4 break; } }
50 名前:デフォルトの名無しさん mailto:sage [2014/10/13(月) 09:40:18.17 ID:HAWua27Y] >>49 インデクスを条件にするのはおかしくね? ループ内に入れる意味が無いと思うんだが。 ただの例だとは思うんだけど、実際いるんだよねー。
51 名前:デフォルトの名無しさん mailto:sage [2014/10/13(月) 09:59:02.19 ID:0ktC7py0] >>50 ループに入れないと多条件分岐の大域脱出ができない if else を使わずにcomplex conditionの多条件分岐をするにはこれしかない
52 名前:デフォルトの名無しさん mailto:sage [2014/10/13(月) 10:02:24.30 ID:R99qWLrl] そんなバッドノウハウ的なループを組むぐらいだったら 潔くgotoしたほうがよっぽどすっきりするんじゃ・・・
53 名前:デフォルトの名無しさん mailto:sage [2014/10/13(月) 10:06:09.49 ID:PPv6Llzm] >>49 goto がウォーミングアップを開始したようです
54 名前:デフォルトの名無しさん mailto:sage [2014/10/13(月) 10:32:27.43 ID:yDwfk/q+] do {} while(false) 使えよ switch { case if (a<0): //何らかの処理 break; case if (a==0): // ... } みたいな文法が追加されないものか。
55 名前:デフォルトの名無しさん mailto:sage [2014/10/13(月) 10:32:57.61 ID:UJCB5jQM] ごとうさん禁止
56 名前:デフォルトの名無しさん mailto:sage [2014/10/13(月) 10:33:52.69 ID:UJCB5jQM] >>54 Ruby使っとけ
57 名前:デフォルトの名無しさん mailto:sage [2014/10/13(月) 15:03:50.49 ID:C0citLy+] >>51 それは何かを見失ってるぞ…
58 名前:デフォルトの名無しさん mailto:sage [2014/10/13(月) 15:28:31.26 ID:yFRqmPNp] これでスッキリ解決 while(1){ if(条件1){ // 処理1 break; } if(条件2){ // 処理2 break; } … if(条件4){ // 処理4 break; } break; }
59 名前:デフォルトの名無しさん mailto:sage [2014/10/13(月) 15:56:57.90 ID:xmRmtkZK] 条件式が定数になっていますと出るからやだ! #pragmaで消すのもやだ!
60 名前:デフォルトの名無しさん mailto:sage [2014/10/13(月) 16:11:03.09 ID:oBfc/N42] switch()default{〜};
61 名前:デフォルトの名無しさん mailto:sage [2014/10/13(月) 16:15:28.41 ID:PPv6Llzm] >>59 for(;;) { }
62 名前:デフォルトの名無しさん mailto:sage [2014/10/13(月) 16:16:21.40 ID:ILi3nfyT] do{ if(条件1){ // 処理1 break; } if(条件2){ // 処理2 break; } … if(条件4){ // 処理4 break; } }while(0); これでも定数条件警告はでるんかね
63 名前:デフォルトの名無しさん mailto:sage [2014/10/13(月) 16:19:26.50 ID:xmRmtkZK] でるしループしない
64 名前:デフォルトの名無しさん mailto:sage [2014/10/13(月) 16:26:04.57 ID:31lhSK+c] >>62 割といい気がする >>63 ループしなくていいんじゃないの?
65 名前:デフォルトの名無しさん [2014/10/13(月) 17:02:55.96 ID:yFRqmPNp] switch-case は実は要らない子
66 名前:デフォルトの名無しさん mailto:sage [2014/10/13(月) 19:47:15.34 ID:xmRmtkZK] >>64 じゃあなんでループスコープがあんの?
67 名前:デフォルトの名無しさん mailto:sage [2014/10/13(月) 19:54:04.38 ID:HxbDOdsz] breakしてelseifの代わりにしてる 桁が揃う
68 名前:デフォルトの名無しさん mailto:sage [2014/10/13(月) 20:21:29.13 ID:6VoVg4Hp] goto使えよ 多重ループを抜けるためのものとして言語仕様に規定されてんだから
69 名前:デフォルトの名無しさん mailto:sage [2014/10/13(月) 20:23:03.32 ID:83yd1iMH] >>66 break用
70 名前:デフォルトの名無しさん mailto:sage [2014/10/13(月) 20:40:29.84 ID:xmRmtkZK] そっちのが冗長な気が if (){ }else if(){ }else{ } 式合わせたいだけならこうじゃあかんの?
71 名前:デフォルトの名無しさん mailto:sage [2014/10/13(月) 21:18:56.70 ID:R99qWLrl] pastebin.com/v6Tqy4Ay ってか反復実行用の制御構造を反復実行以外のために使うの 正直どうかと思うんだけども あと桁揃えってそんなに必要か?ってのもあるし
72 名前:デフォルトの名無しさん mailto:sage [2014/10/13(月) 21:27:11.36 ID:VHCsShnL] こういうのは見たことある if () { } else if () { } else { }
73 名前:デフォルトの名無しさん mailto:sage [2014/10/13(月) 22:26:38.93 ID:eSZv2Ied] 変なこと聞きます どこからでもアクセス、変更できる 全ソース唯一で共通の変数が欲しいんですが まずいでしょうか?まずいですよね... どうしたらいいでしょうか
74 名前:デフォルトの名無しさん mailto:sage [2014/10/13(月) 22:49:45.09 ID:6TQ4M6Zy] ウンコVisual C++でプリコンパイルヘッダーで宣言して その定義用ファイルで定義
75 名前:デフォルトの名無しさん [2014/10/13(月) 23:09:38.66 ID:aHzEmfe8] >>71 なかなか面白いアイディアだと思う。 俺だったら、 #define ifif if #define elif else if で、 ifif(...){ } elif(...){ } else{ } はどうかな。 ififってモシモシって発音する。俺の発明。
76 名前:デフォルトの名無しさん mailto:sage [2014/10/13(月) 23:20:25.78 ID:Mz6dBuwi] ifの入れ子と勘違いする
77 名前:デフォルトの名無しさん mailto:sage [2014/10/13(月) 23:44:40.22 ID:li7EYIGU] >>75 そんなの書いてるやついたらぶん殴るわw 趣味なら好きにして良いけど
78 名前:デフォルトの名無しさん mailto:sage [2014/10/13(月) 23:57:23.66 ID:7i+sJhXA] >>75 たぶん最低最悪の方法
79 名前:デフォルトの名無しさん mailto:sage [2014/10/14(火) 00:02:39.56 ID:li7EYIGU] ttp://www.pro.or.jp/~fuji/mybooks/cdiag/ ここに載ってそうなウンコードだよなww
80 名前:デフォルトの名無しさん mailto:sage [2014/10/14(火) 00:12:30.16 ID:Y0D0XXw9] >>73 どうしてもというのであれば仮定義が近いが、それでも唯一というのは無理だね、ヘッダも使えない/使いたくないの?
81 名前:デフォルトの名無しさん mailto:sage [2014/10/14(火) 00:27:43.42 ID:rPKdJ04U] >>80 あ、すいません... cppをソースっていうんでしたね... ヘッダーでも全く問題ないです
82 名前:デフォルトの名無しさん mailto:sage [2014/10/14(火) 01:18:36.52 ID:GaMs9Qls] >>73 どうしてもならSingletonにしてみればどうかな?
83 名前:デフォルトの名無しさん mailto:sage [2014/10/14(火) 01:21:09.38 ID:YkkW72Cg] >>82 はどうしようもない低脳
84 名前:デフォルトの名無しさん mailto:sage [2014/10/14(火) 01:23:56.31 ID:GaMs9Qls] >>83 どこがどう? externするよりはSingletonにしてアクセサメソッド使うことでデバッグも容易になると思うけど何か読み違えたかな そうならごめん
85 名前:デフォルトの名無しさん mailto:sage [2014/10/14(火) 01:26:19.21 ID:t5fH7arr] >>75 俺は半分皮肉であのコードを書いたので マジリアクションされても、その、困る
86 名前:デフォルトの名無しさん mailto:sage [2014/10/14(火) 01:35:32.06 ID:1U4zg6hk] >>84 Singletonを使うかどうかは質問と関係なくね?
87 名前:デフォルトの名無しさん mailto:sage [2014/10/14(火) 01:51:12.41 ID:GaMs9Qls] >>86 うん、Singleton勧めた理由は上述の通りデバッグの観点から 超グローバル使うならリスク少ない方が良いかと思った
88 名前:デフォルトの名無しさん mailto:sage [2014/10/14(火) 02:31:12.23 ID:rPKdJ04U] シングルトン 聞いたことはあったのですがこれを機に調べてみました。 素人目から見るとこれいいじゃん! となったのですが、私の用途の場合どうなのでしょうか シングルトンを.hに書いて 使いたいクラスでインクルード そのクラスのコンストラクタでメンバに渡す メンバ関数でいつでもアクセス・変更が可能 というような具合でしょうか?
89 名前:デフォルトの名無しさん mailto:sage [2014/10/14(火) 06:01:42.33 ID:sqIDnjxe] >>88 > 私の用途の場合どうなのでしょうか あんたの用途がわからんことにはなんとも...
90 名前:デフォルトの名無しさん mailto:sage [2014/10/14(火) 07:15:12.54 ID:lV7cR9FO] >>85 ボケにも皮肉にもなってないということだよ
91 名前:デフォルトの名無しさん mailto:sage [2014/10/14(火) 09:02:01.54 ID:yI2xaj4J] memory mapped file
92 名前:デフォルトの名無しさん mailto:sage [2014/10/14(火) 12:38:47.77 ID:iGc1RRvU] >>71 割とあり
93 名前:デフォルトの名無しさん mailto:sage [2014/10/15(水) 08:01:01.84 ID:caHw/4to] 同意します
94 名前:71 mailto:sage [2014/10/15(水) 08:02:56.80 ID:Mz70dzpQ] まあ別に止めんが
95 名前:デフォルトの名無しさん mailto:sage [2014/10/15(水) 10:38:48.73 ID:caHw/4to] 一回だけループと捉えれば矛盾はしない
96 名前:デフォルトの名無しさん mailto:sage [2014/10/18(土) 18:08:58.62 ID:MX5ZltoI] 名前付きブロックと名前付きブレーク文があればいいのにな。 b1 { if (...) { break b1; } if (...) { break b1; } } b2 { for (...) b3 { for (...) { if (...) break b2; else brak b3; } } } と思ったけど、流れが分かりにくくてやっぱ嫌だなw
97 名前:デフォルトの名無しさん mailto:sage [2014/10/18(土) 18:20:58.99 ID:RLn7ZGiN] goto と変わらん希ガス
98 名前:デフォルトの名無しさん mailto:sage [2014/10/18(土) 18:34:11.42 ID:4Ds6Kb18] if (...) { goto b1; } if (...) { goto b1; } b1:; for (...) { b3:; for (...) { if (...) goto b2; else goto b3; } } b3:;
99 名前:デフォルトの名無しさん [2014/10/18(土) 20:42:20.12 ID:rcF0KJ7P] バグってるな
100 名前:デフォルトの名無しさん mailto:sage [2014/10/18(土) 21:05:12.23 ID:b+FwjjaL] つか、条件式の位置を揃えたいならif と()の間にスペースでも増やして揃えればいいし、 条件式につけるようなコメントが本当に必要なのか?って感じがする // iが0のとき if (i == 0) { // iが0のときの処理 } とかバカバカしくね?
101 名前:デフォルトの名無しさん mailto:sage [2014/10/18(土) 21:27:07.64 ID:4Ds6Kb18] else if (ってやればいいよね
102 名前:デフォルトの名無しさん mailto:sage [2014/10/19(日) 00:07:19.88 ID:qe4xvLvd] >>100 それはコメント書くことがバカバカしいのではなくて そのコメントの書き方がバカバカしいだけでは?
103 名前:デフォルトの名無しさん mailto:sage [2014/10/19(日) 05:49:57.35 ID:irMeVnbo] >>100 例が悪い
104 名前:デフォルトの名無しさん mailto:sage [2014/10/19(日) 14:21:02.67 ID:sYDl3gbX] [&]() { if (...) { ... return; } if (...) { ... return; } ... ... }();
105 名前:デフォルトの名無しさん mailto:sage [2014/10/19(日) 15:02:04.08 ID:sVtqNbj4] >>104 jQueryみたいだ・・・
106 名前:デフォルトの名無しさん mailto:sage [2014/10/19(日) 15:10:49.12 ID:GzqB2qjr] なんでelseで列が合わないってだけでそこまでしなきゃならんねん
107 名前:デフォルトの名無しさん mailto:sage [2014/10/19(日) 15:47:46.94 ID:n9kPv86G] >101 だめです 下の下です
108 名前:デフォルトの名無しさん mailto:sage [2014/10/19(日) 16:49:15.61 ID:PsSi0GjT] ameblo.jp/nana-2007-july/entry-10037531052.html に、switchで文字列を使用する方法が書いてあるのですが、 問題なく動くし、switchで文字列が使える事は画期的だと思うのですが、 ググってもここ以外にこの方法に関してヒットしないのですが、世の中ではあまり 普及していない方法なのでしょうか? このやり方を積極的に使っても問題ないでしょうか?
109 名前:デフォルトの名無しさん mailto:sage [2014/10/19(日) 16:53:48.42 ID:c/fNN/TF] 文字列(ただし4バイトに限る)なんて使えるとは言わない そんなのバグの元だやめとけ
110 名前:デフォルトの名無しさん mailto:sage [2014/10/19(日) 16:55:32.08 ID:PsSi0GjT] >>文字列(ただし4バイトに限る) わたしも今気付きました。 残念。 FAQかもしれませんが、switchで文字列を使うお勧めの方法は ありますか?
111 名前:デフォルトの名無しさん mailto:sage [2014/10/19(日) 16:59:11.07 ID:I8zMPvcx] >>108 4文字以上で比較がおかしくなるし、10文字以上でバッファーオーバーフローするし、エンディアン考慮してないし ダメダメ過ぎる
112 名前:デフォルトの名無しさん mailto:sage [2014/10/20(月) 04:43:09.29 ID:R4boVMR3] >>108 複数文字の文字定数を使ってるだけで、別に面白いテクではない もちろんやらない方がいい >>110 文字列を入力にintを返す関数を使えばいい
113 名前:デフォルトの名無しさん mailto:sage [2014/10/20(月) 09:12:23.00 ID:nHn9rVxH] switchで羅列できるような程度の処理分岐なら素直にif(strcmp == 0) ... ただ値返すだけのような処理ならbsearchかunordered_map使えよ
114 名前:デフォルトの名無しさん [2014/10/20(月) 09:34:51.62 ID:eWr20XAi] switch なんて飾りです
115 名前:デフォルトの名無しさん mailto:sage [2014/10/20(月) 21:53:32.14 ID:y5NmhbBv] うそー switchって書かないとコンパイルエラーになるよー
116 名前:デフォルトの名無しさん mailto:sage [2014/10/20(月) 22:23:16.91 ID:YIaZ+UJI] たとえばMyClass.hが物凄く長くなったので分割したい場合、 --- MyClass.h --- class MyClass{ public: int a; // ...その他の定義がたくさん private: int b; // ...その他の定義がたくさん }; ----------------- を、 --- MyClass.h --- class MyClass{ #include "public.h" #include "private.h }; -- public.h -- public: int a; // ... -- private.h -- private: int b; // ... のように、分割したのですが、おかしいですか? もっとお勧めの方法があれば教えてください。
117 名前:デフォルトの名無しさん mailto:sage [2014/10/20(月) 22:27:32.77 ID:Z/nnvF1A] おかしいに決まってんだろ そんなでかいクラス作るな もっと分割しろ
118 名前:デフォルトの名無しさん mailto:sage [2014/10/20(月) 22:35:22.05 ID:YIaZ+UJI] >>117 レスありがとうございます。 MyClassの設計は別問題として、最初に示した例のように分割したファイルを #include 文で読み込む方法は、一般的なやり方かどうかを教えてください。
119 名前:デフォルトの名無しさん mailto:sage [2014/10/20(月) 22:38:02.03 ID:Z/nnvF1A] 単体では何の意味のないヘッダファイル作ってどうすんだよ
120 名前:デフォルトの名無しさん mailto:sage [2014/10/20(月) 23:16:44.85 ID:YIaZ+UJI] >>119 ググっても良い例が見つからないのですが、どこかお勧めのサイト ありませんか?
121 名前:デフォルトの名無しさん mailto:sage [2014/10/20(月) 23:49:59.29 ID:OiFIr1mQ] ファイルを分けなければならないほどクラスが大きくなったら分割するのが普通だと思う。 とりあえずPImplあたりでprivate部分だけでも分離したら?
122 名前:デフォルトの名無しさん mailto:sage [2014/10/21(火) 00:14:35.72 ID:y+Kj1blL] でかいクラスって作った事ないんだけど、具体的にどうするの?
123 名前:デフォルトの名無しさん mailto:sage [2014/10/21(火) 01:08:23.61 ID:TXfJYF3K] とりあえず質問に答えるなら一般的ではない リファクタリングして適切なサイズにするのが一般的だと思うが、社内の力関係とかで無理なら諦めろ
124 名前:デフォルトの名無しさん [2014/10/21(火) 04:53:46.23 ID:X9UkWcg0] --- MyClass.h --- class MyClass{ #include "public.inc" #include "private.inc }; -- public.inc -- public: int a; // ... -- private.inc -- private: int b; // ...
125 名前:デフォルトの名無しさん mailto:sage [2014/10/21(火) 05:46:30.86 ID:FIetDqZP] ファイル分けるほど巨大ならリファクタリングしたいな
126 名前:デフォルトの名無しさん mailto:sage [2014/10/21(火) 11:43:07.07 ID:c4wBsC2+] 関数内でMixInしたくて#includeしたことある
127 名前:デフォルトの名無しさん mailto:sage [2014/10/21(火) 11:52:23.39 ID:AscR5tLz] >関数内で
128 名前:デフォルトの名無しさん [2014/10/21(火) 21:40:25.60 ID:uqnmK+pt] プログラミング設計の本でこれだけは読んどけってものはありますか?
129 名前:デフォルトの名無しさん mailto:sage [2014/10/21(火) 22:06:07.21 ID:RG7X7O+y] >>118 >>119 のいうとおりだ、ヘッダというのものは元来複数の .c, .cpp/.C から参照されるべきもの
130 名前:デフォルトの名無しさん mailto:sage [2014/10/22(水) 21:12:18.01 ID:ga5n3yyZ] すみません VC++(mfc)で、 Aというダイアログクラスに、Bというリストコントロール(レポートビュー)を作成しています。 BはCListCtrlを継承した独自クラスで、そのなかにCというコンボボックスを作成しリスト内の項目で一部リストから選択できるようにしています。 CはCComboBoxを継承した独自クラスです。 これら全てを合わせて一つの機能をもったダイアログなのですが、 1.Cのコンボボックスのソースになる値(std::vector) 2.1.の変数を操作するメソッド(追加、削除、取得等) 3.Bのリストに表示する値(std::vector) 4.3.を操作するメソッド(追加、削除、取得等) これらはそれぞれどのクラスに持つのが良いのでしょうか? オブジェクト指向についてまだまだ勉強不足なのですが、 皆さんのご意見をお聞かせください。 ちなみに現在は、Aのダイアログクラスにすべての値(1.3.)を持たせ、 B,Cはそれのポインタを格納するメンバ変数を持っています。 2.はAのダイアログクラスのメンバ変数で操作し、 4.はCのリストコントロールクラスでリストが変更されるタイミングで変数の値を操作しています。 よろしくお願いします。
131 名前:デフォルトの名無しさん mailto:sage [2014/10/24(金) 20:50:15.08 ID:2OoN5cPH] vector<string> v = {"abc", "", "de", "", "fgh"}; の時に、空文字列の要素を除去して v = "abc" "de" "fgh" にしたいのですが、vectorの要素をループで除去するとエラーして うまく行きません。お勧めの方法教えてください。
132 名前:デフォルトの名無しさん mailto:sage [2014/10/24(金) 20:59:50.39 ID:1Ixd4XIg] vector::eraseの戻り値を使ってiteratorを更新する
133 名前:デフォルトの名無しさん mailto:sage [2014/10/24(金) 21:07:07.09 ID:qs1er6cd] >>131 ttp://ideone.com/qUew3U
134 名前:デフォルトの名無しさん mailto:sage [2014/10/24(金) 21:47:32.19 ID:2OoN5cPH] >>132 ,133 レスありがとうございました。 eraseとremoveを組み合わせてこんなに簡単に書けるとは、知らなかったです。 133さん有難うございました。
135 名前:デフォルトの名無しさん mailto:sage [2014/10/24(金) 22:02:33.02 ID:zZIfWK5x] ところで"abc"s って書いたらstd::string型になるのって C++14だっけ?
136 名前:デフォルトの名無しさん mailto:sage [2014/10/24(金) 23:34:06.70 ID:h3WwlHdL] v.erase(std::remove(v.begin(),v.end(),””),v.end());
137 名前:デフォルトの名無しさん mailto:sage [2014/10/24(金) 23:49:54.78 ID:bzRiGdHm] >>135 そう
138 名前:デフォルトの名無しさん mailto:sage [2014/10/25(土) 14:40:57.22 ID:CQNov1og] for (const string& s : v) cout << s<< endl; なんだこれわ うーむ未熟
139 名前:デフォルトの名無しさん mailto:sage [2014/10/25(土) 14:46:05.50 ID:GwfszP9i] for (const string& s : v) このfor文の残念な仕様は何とかならないものか for (const string& s : (const vector<string>&)v) 相当のことを簡単にしたいんだが
140 名前:デフォルトの名無しさん mailto:sage [2014/10/25(土) 14:56:33.12 ID:PupOMkEO] >>139 そこに何の意味が?
141 名前:デフォルトの名無しさん mailto:sage [2014/10/25(土) 15:21:11.20 ID:BH5UYxje] 何が残念なのかわからん
142 名前:デフォルトの名無しさん mailto:sage [2014/10/25(土) 15:46:57.08 ID:2HGeWB2j] vector<string>::iterator it = v.begin(); const string & s = (const string &)*it; vector<string>::const_iterator it = ((const vector<string> &)v).begin(); const string & s = *it; 非constのコストが違うかもしれないコンテナでの話とか 気分的な問題か
143 名前:デフォルトの名無しさん mailto:sage [2014/10/25(土) 16:22:59.91 ID:KswX2872] constであることに意味があるならconst_cast使って明示的にした方が意図が分かりやすい
144 名前:デフォルトの名無しさん mailto:sage [2014/10/25(土) 18:39:16.95 ID:PupOMkEO] いやいやconst_castは違うだろう
145 名前:デフォルトの名無しさん mailto:sage [2014/10/25(土) 18:51:37.16 ID:VuWM8zaB] アスペが多いな。 for (auto& itr = v.cbegin(); itr != v.cend(); ++itr) を簡潔に書きたいってことだろ。 constにキャストするのは今の文法でconst_iteratorを得るための一手段ってだけで
146 名前:デフォルトの名無しさん mailto:sage [2014/10/25(土) 19:11:43.50 ID:PupOMkEO] そんなの皆分かっているだろうに。 確実にcbegin呼ばせたいなら そういうcbegin,cendラップして begin.endとして見せる template classとヘルパ関数作ればいい。 それが標準に無いのはそういう需要まで 想定していないだけじゃね。 まあ、std::cbeginが遅れて標準になるくらいだから、一般的な需要を網羅しきれていないのは確かだが。
147 名前:デフォルトの名無しさん mailto:sage [2014/10/25(土) 19:13:38.13 ID:dFV7jCVh] そもそもcbeginはautoのために入ったようなもんだろ
148 名前:デフォルトの名無しさん mailto:sage [2014/10/25(土) 21:43:08.79 ID:Zc1H9u/G] ヘルパ関数作った。これでどうだ ideone.com/PrJK5g
149 名前:デフォルトの名無しさん mailto:sage [2014/10/25(土) 23:03:33.40 ID:vC010Lko] 糞言語の糞コード
150 名前:デフォルトの名無しさん mailto:sage [2014/10/25(土) 23:18:42.59 ID:Vmq3hk+I] ここで議論しないといけないようなことは使わないという選択
151 名前:デフォルトの名無しさん mailto:sage [2014/10/26(日) 02:25:41.90 ID:NC0YiWNr] スーパー初心者なのでスーパー初心者な事聞きますが ポインタがコスト削減というのも、扱いが難しく危険というのも なんとなーく分かりましたが 変哲もない、誰に渡すでもない そんなローカル変数をもポインタで宣言すべきでしょうか?
152 名前:デフォルトの名無しさん mailto:sage [2014/10/26(日) 02:36:02.76 ID:tTDGdEGp] NO ポインタはインスタンス参照時の値コピーコストを減らすのが目的なので、 ポインタへわざわざnewしたインスタンスのアドレスを渡して、破棄(delete)を必須にするのは冗長になるだけ
153 名前:デフォルトの名無しさん mailto:sage [2014/10/26(日) 03:17:23.53 ID:NC0YiWNr] おぉ、なるほど 確かに言われてみればそんな気がします 値を渡すことが無い限り、又はint1つ程度の小ささなら 普通の宣言でよいのですね ありがとうございました
154 名前:デフォルトの名無しさん mailto:sage [2014/10/26(日) 03:44:09.47 ID:NI/V74vF] どっかで実体は取るわけだかんね
155 名前:デフォルトの名無しさん mailto:sage [2014/10/26(日) 04:19:18.75 ID:tTDGdEGp] 一応、スタックに入りきらない時にわざとnewしてヒープに確保する時があるけど、 普段使いだとまずないから普段は通常の変数宣言で良いよ
156 名前:デフォルトの名無しさん mailto:sage [2014/10/26(日) 04:39:00.30 ID:QN0pZI7S] >ポインタはインスタンス参照時の値コピーコストを減らすのが目的なので、 バカは意味を考えないから そういう形式的な観点でしか考えられないのだろう
157 名前:デフォルトの名無しさん [2014/10/26(日) 05:55:15.51 ID:P4UrXCNx] rubyですね わかります
158 名前:デフォルトの名無しさん mailto:sage [2014/10/26(日) 06:59:51.73 ID:7QrOBmsc] アドレスを保持でき、型サイズ単位のアドレスジャンプ、ないし型インターフェースを提供云々って言えば良かったのか? 質問が具体的操作の一例なのに構造だけ述べたってピンと来る人少ないだろう
159 名前:デフォルトの名無しさん mailto:sage [2014/10/26(日) 07:07:58.69 ID:/I9/+mIH] やはり低脳にはポインターは理解できないようだな 大きさとか性能も大切だが そもそも 値としての振る舞いを期待しているのか参照としての振る舞いを期待しているのかの発想が無いらしい
160 名前:デフォルトの名無しさん mailto:sage [2014/10/26(日) 07:16:13.76 ID:7QrOBmsc] 値としての振る舞いってダブルポインタ以上くらいしか無いと思うが・・・
161 名前:デフォルトの名無しさん mailto:sage [2014/10/26(日) 07:30:04.50 ID:/US9w/Z3] >>160 低能って言葉が好きな人に関する傾向を考えると わざわざ反応する必要はないと思う
162 名前:デフォルトの名無しさん mailto:sage [2014/10/26(日) 07:58:33.05 ID:/I9/+mIH] >傾向を考えると なるほど レスの内容を読む知能もない低能は 自演するしか能がないわけだなふむふむ
163 名前:デフォルトの名無しさん mailto:sage [2014/10/26(日) 08:26:38.35 ID:IQ+MA170] >>158 ポインタの指してるメモリの1word前には確保したときのサイズが格納されてることもある
164 名前:デフォルトの名無しさん mailto:sage [2014/10/26(日) 08:28:35.93 ID:IQ+MA170] >>160 ダブルポインタって呼び方いつから流行ったのか知らないけど 誤解を招く表現だからあまり使わない方が良いと思う ちゃんと「ポインタのポインタ」と言うべき
165 名前:デフォルトの名無しさん mailto:sage [2014/10/26(日) 09:32:42.41 ID:rLkTHiAH] それじゃ長すぎ。ポポンタだな
166 名前:デフォルトの名無しさん [2014/10/26(日) 10:12:55.33 ID:CRv5XK0J] >>164 正確には「ポインタへのポインタ」な。
167 名前:デフォルトの名無しさん mailto:sage [2014/10/26(日) 10:37:19.40 ID:hAmBOh4e] >>164 > 誤解を招く表現だからあまり使わない方が良いと思う なにと誤解するんだ?
168 名前:デフォルトの名無しさん mailto:sage [2014/10/26(日) 10:45:44.89 ID:USY7r1W5] double*
169 名前:デフォルトの名無しさん mailto:sage [2014/10/26(日) 10:47:29.67 ID:sxXC7dR9] 日本語だったら2階のポインタ、で回避できるな
170 名前:デフォルトの名無しさん mailto:sage [2014/10/26(日) 10:55:14.52 ID:P4UrXCNx] ダブルポインタなんて言うのは日本時だけだったっけ?
171 名前:デフォルトの名無しさん mailto:sage [2014/10/26(日) 11:40:28.26 ID:OTYv3dOc] >>163 それはなんというBSTR型ですか
172 名前:デフォルトの名無しさん mailto:sage [2014/10/26(日) 13:50:15.01 ID:8S4QBfQC] >>170 いや日本人でも言わないよ
173 名前:デフォルトの名無しさん mailto:sage [2014/10/26(日) 13:59:29.63 ID:gMYGq5V7] >>171 mallocでもなるよ
174 名前:デフォルトの名無しさん mailto:sage [2014/10/26(日) 16:18:13.37 ID:hyoMl1hX] >>173 なるかもしれないことに何の意味があるん?
175 名前:デフォルトの名無しさん mailto:sage [2014/10/26(日) 16:56:10.71 ID:1Oyy5cGI] アドレスとサイズの情報はどこかでもってるけど前とは限らん この範囲のアドレスはぜんぶ同じサイって管理もあるしハイブリッドもある
176 名前:デフォルトの名無しさん mailto:sage [2014/10/26(日) 17:21:15.98 ID:NI/V74vF] 自動(オート)変数って取れなくなる時ってあるっけ? あるべなぁ・・・ そん時はどうなるんだっけなぁ。なったことないしぃ ちょと大きめなメモリが欲しいときはstaticで宣言してたなぁ。 C++になってからはSTLでらくちんちんw
177 名前:デフォルトの名無しさん mailto:sage [2014/10/26(日) 17:29:36.55 ID:ngEx6XQB] >>176 スタックオーバーフローの話? register 付けていると &でアドレスが取れなくなる処理系 があったように記憶している
178 名前:デフォルトの名無しさん mailto:sage [2014/10/26(日) 17:54:06.61 ID:USY7r1W5] 処理系というかもともとcでregister変数のアドレスとるのはできない仕様だったような。 c++はokだけどそれってregisterの意味無いよね
179 名前:KUSO KOTE ◆unko./w.Osri mailto:sage [2014/10/26(日) 21:06:38.86 ID:FU/kawyh] これかな。知らんかった。 ISO/IEC 9899:2011 6.5.3.2 Address and indirection operators Constraints The operand of the unary&operator shall be either a function designator,the result of a []or unary*operator,or an lvalue that designates an object that is not a bit-field and is not declared with the register storage-class specifier.
180 名前:デフォルトの名無しさん [2014/10/26(日) 21:07:12.33 ID:kiy4PZ8g] register変数のアドレス参照するようなコードがあってもいちいちエラーにしない親切仕様ってだけだろ register変数使ってるような古臭いコードのメインテナンス作業者を救済するというか
181 名前:デフォルトの名無しさん mailto:sage [2014/10/26(日) 21:17:14.31 ID:NHig/W5N] 今は昔のautoみたいに飾りだよね
182 名前:デフォルトの名無しさん mailto:sage [2014/10/27(月) 00:24:34.57 ID:LftTpzNV] autoキーワードを使うと老害に説明するのが面倒くさい。
183 名前:デフォルトの名無しさん mailto:sage [2014/10/27(月) 08:30:08.51 ID:YiFaNuCf] 世の中のコンパイラができるだけ早くC++11に対応しますように
184 名前:デフォルトの名無しさん mailto:sage [2014/10/27(月) 13:47:34.18 ID:MTe62n5j] clang/G++/Visual C++がそこそこ対応してりゃいいや Visual C++14はリリースまでに せめてconstexprフル実装して欲しい所
185 名前:デフォルトの名無しさん mailto:sage [2014/10/27(月) 13:57:59.87 ID:SHa9u56N] それ以外のC++環境を知らない
186 名前:デフォルトの名無しさん [2014/10/27(月) 14:06:32.19 ID:pOuq9Cgi] dmc
187 名前:デフォルトの名無しさん mailto:sage [2014/10/27(月) 19:27:47.44 ID:nARZkbNV] vc: Windowsで開発するとき使う g++: Linuxで開発するとき使う clang: 上記二つの挙動が怪しいと思った時に文法を確認するために使う icc何ソレうまいの?
188 名前:デフォルトの名無しさん mailto:sage [2014/10/27(月) 19:33:11.11 ID:6oMDTSh6] 某ランド
189 名前:デフォルトの名無しさん mailto:sage [2014/10/27(月) 19:37:19.05 ID:LftTpzNV] >>187 はLCC試食版がお似合いな人
190 名前:デフォルトの名無しさん mailto:sage [2014/10/27(月) 19:38:39.81 ID:6oMDTSh6] CC見てるとトイレ逝きたくなる
191 名前:デフォルトの名無しさん mailto:sage [2014/10/27(月) 19:40:20.09 ID:yil7HT1j] >>189 いぁいぁBDS-CとかDOH-Cで十分でしょう
192 名前:デフォルトの名無しさん mailto:sage [2014/10/27(月) 21:25:00.08 ID:mYDuejPS] LCC試食版は宗教 何故か劣ったものを他人に勧める迷惑な奴ら
193 名前:デフォルトの名無しさん mailto:sage [2014/10/28(火) 06:47:28.89 ID:AaLfatfL] opencvのサンプルにあるfind_obj.cpp内のdst_conersはどのように算出されているのでしょうか? hがそれぞれ何を指しているのかも理解できていない初心者です。 よろしくお願いします。
194 名前:デフォルトの名無しさん mailto:sage [2014/10/28(火) 06:51:37.02 ID:WrhD/8H6] スレ違いを装った荒らしは去れ
195 名前:デフォルトの名無しさん mailto:sage [2014/10/28(火) 09:44:49.87 ID:XK3wSZjJ] >>187 iccもappleもclang もうclang/LLVM化という流れだ
196 名前:デフォルトの名無しさん [2014/10/28(火) 20:42:59.95 ID:kXG8DokC] 組み込み用のチップメーカー謹製コンパイラなんて未だに使ってる奴いる? gccベースでもないやつ
197 名前:デフォルトの名無しさん [2014/10/30(木) 12:21:16.77 ID:HIs5p7W3] JavaからCやってるんですが対応関数がよくわかりません String.splitというメソッドがJavaにはありますが Cにはあるんですか? agrs.lengthとやって引数を数えることができたんですが Cではそんなのはあるんでしょうか? 調べかたが難しいです
198 名前:デフォルトの名無しさん mailto:sage [2014/10/30(木) 12:27:13.37 ID:5HPq9xeF] >>197 strtok argc
199 名前:デフォルトの名無しさん [2014/10/30(木) 13:47:47.64 ID:HIs5p7W3] ありがとう。 Cの場合ポインタがあるので、すごいたくさん宣言の仕方や書き方があります 1個だけ宣言と値とアドレスの出し方覚えて そればっかり使って書くのである程度対応ってできるでしょうか そもそもポインタ使って書かなくて書ける気がしますし メソッドにアドレスを渡したい時は&aって書いたほうがわかりやすいんですが 配列など大量の同じ意味のいろいろな記述の仕方は 読むための知識であり 自分で書くにはいらないんでしょうか?
200 名前:デフォルトの名無しさん [2014/10/30(木) 14:21:35.41 ID:/AIAlFmM] イイエ
201 名前:デフォルトの名無しさん mailto:sage [2014/10/30(木) 15:15:04.84 ID:HIs5p7W3] ありがとう EasyIDECというのをつかってるんですが コマンドライン引数をいれて実行ってどうやってやるんでしょう
202 名前:デフォルトの名無しさん mailto:sage [2014/10/30(木) 15:48:28.28 ID:1rX8nkrW] コマンドライン引数をいれて実行ってどういう意味なんでしょう
203 名前:デフォルトの名無しさん mailto:sage [2014/10/30(木) 15:49:12.95 ID:s/3Hn11s] visualstudioならできるよ
204 名前:デフォルトの名無しさん mailto:sage [2014/10/30(木) 15:56:47.23 ID:HIs5p7W3] >>202 文章問題でよくあるやつです argvのやつ
205 名前:デフォルトの名無しさん [2014/10/30(木) 16:05:57.58 ID:/AIAlFmM] 真面目に質問してるなら、答えはVisual Studio使え。 荒らしたいだけならUbuntuでも入れてみると良いと思う。 viを使っていろいろするとサイヤ人になれる。 Ctags使ってインテリセンスよりすごいとかいろいろ言えるよ。 頑張れ。
206 名前:デフォルトの名無しさん mailto:sage [2014/10/30(木) 17:07:28.69 ID:qqM1eCNi] >>196 shとかにgccベースなんてあるなら教えてくれ。
207 名前:デフォルトの名無しさん mailto:sage [2014/10/30(木) 17:20:14.39 ID:T0ormrYn] GCC for SuperH
208 名前:デフォルトの名無しさん mailto:sage [2014/10/30(木) 20:30:28.60 ID:RCZ8rVU+] ポインタが難しいんですが これは値 これはアドレス メソッドの引数の形はこれ みたいなおすすめのまとめ表ってないですよね?
209 名前:デフォルトの名無しさん mailto:sage [2014/10/30(木) 20:48:20.94 ID:tTw0X6PP] 多分おすすめという発想が間違っている あるいは、stl的デザインパターンがそうなのかもしれない
210 名前:デフォルトの名無しさん [2014/10/30(木) 21:06:20.82 ID:/AIAlFmM] どこが難しいのかがわからん。
211 名前:デフォルトの名無しさん mailto:sage [2014/10/30(木) 21:08:20.79 ID:O+0lZGmY] >>199 アセンブラの勉強をしてから戻ってくればいいさ どんなコードを出しているかわかれば理解も深まる gcc だとsave-tempsかな
212 名前:デフォルトの名無しさん mailto:sage [2014/10/30(木) 21:43:45.71 ID:RCZ8rVU+] ポインタは自分でまとめるしかないんですね。 char st1[11] = "Hello"; char *st2 = "World"; strcat( st1, st2 ); これのst1が *st1の時どうやって連結するんでしょうか
213 名前:デフォルトの名無しさん mailto:sage [2014/10/30(木) 21:44:57.71 ID:T0ormrYn] イミフ
214 名前:デフォルトの名無しさん mailto:sage [2014/10/30(木) 22:03:53.50 ID:RCZ8rVU+] char *st1 = "Hello"; char *st2 = "World"; strcat( st1, st2 ); こういうことです
215 名前:デフォルトの名無しさん mailto:sage [2014/10/30(木) 22:06:54.18 ID:P+CVnAvq] ばっふぁあふれなのでやってはいけません
216 名前:デフォルトの名無しさん mailto:sage [2014/10/30(木) 22:09:12.41 ID:RCZ8rVU+] 無理なんですか。どうしてますこういう時? *strみたいなのが1000個あったり
217 名前:デフォルトの名無しさん mailto:sage [2014/10/30(木) 22:09:31.01 ID:xlcuHbGp] エスパーするとこう ideone.com/h5TsbX 文字列リテラルは文字分しか確保されてない固定長なので、連結用の配列が別に必要
218 名前:デフォルトの名無しさん mailto:sage [2014/10/30(木) 22:10:16.25 ID:xlcuHbGp] リロード忘れてた
219 名前:デフォルトの名無しさん mailto:sage [2014/10/30(木) 22:11:17.67 ID:RCZ8rVU+] サイズを図ってchar str[]を作って つなげて つなげたもののまたサイズ測ってですか?
220 名前:デフォルトの名無しさん mailto:sage [2014/10/30(木) 22:12:28.29 ID:P+CVnAvq] 普通にstd::string使えばいい
221 名前:デフォルトの名無しさん mailto:sage [2014/10/30(木) 22:14:14.95 ID:RCZ8rVU+] C言語です
222 名前:デフォルトの名無しさん mailto:sage [2014/10/30(木) 22:20:13.33 ID:0FdzLgz5] 文字列を連結したいが結果のサイズが分からない場合どうするのかって事か?
223 名前:デフォルトの名無しさん mailto:sage [2014/10/30(木) 22:22:20.93 ID:P+CVnAvq] strlenと足し算
224 名前:デフォルトの名無しさん mailto:sage [2014/10/30(木) 22:32:12.43 ID:xlcuHbGp] ポインタはあくまでも代入されたアドレスが指す先の値を操作するに過ぎない、要はアドレス専用の変数 文字列リテラルは固定長配列、ポインタst1へ連結しようとすると結果は>>215 の通り 新たに用意する配列が固定長なら>>219 の通り、色々めんどい、 めんどいのが嫌ならstd::string、std::stringが嫌なら自前で可変長操作、 その場合はめんどくさいメモリ確保処理と解放忘れの問題が付きまとうがCを使うんだから面倒みてやってよね ideone.com/LrGJJF
225 名前:デフォルトの名無しさん mailto:sage [2014/10/30(木) 22:49:52.91 ID:kwGwCnBy] 実行時に必要なメモリが不明な時 って事でしょ。 Cならそこでメモリを取るか、C++ならstring とか STLで楽しく。 gccなら配列の宣言時に要素数を"変数"で指定出来る。やってみ。
226 名前:デフォルトの名無しさん mailto:sage [2014/10/30(木) 22:56:12.75 ID:P+CVnAvq] Cでわざわざ文字列構造体を作るなんて給料泥棒じゃねーか
227 名前:デフォルトの名無しさん mailto:sage [2014/10/30(木) 23:00:25.62 ID:T0ormrYn] 誰も言ってないがお前には何が見えているんだ
228 名前:デフォルトの名無しさん mailto:sage [2014/10/30(木) 23:05:18.38 ID:P+CVnAvq] (連結した文字列の長さを効率よく計算するには構造体かクラスのように長さを保持する必要があるがしかし……) まで脳内補完してくれ
229 名前:デフォルトの名無しさん mailto:sage [2014/10/30(木) 23:17:46.40 ID:s/3Hn11s] Cの文字列は文字の配列に過ぎないから
230 名前:デフォルトの名無しさん mailto:sage [2014/10/30(木) 23:20:18.21 ID:cvgUvqEP] >>228 はコミュ障
231 名前:デフォルトの名無しさん mailto:sage [2014/10/30(木) 23:28:31.10 ID:P+CVnAvq] 古代人はみんな現代人と話が通じないから対話困難。
232 名前:デフォルトの名無しさん mailto:sage [2014/10/30(木) 23:32:46.58 ID:P+CVnAvq] 現代人も古代人から見ると対話困難。 対話困難は相対的なものと言える。
233 名前:デフォルトの名無しさん mailto:sage [2014/10/30(木) 23:33:11.69 ID:7MhAAUAK] >連結した文字列の長さを効率よく計算するには構造体かクラスのように長さを保持する必要がある 文字列の長さ管理じゃなくて「連結した文字列」の長さってのは どこから湧いて出てきたんだ?
234 名前:デフォルトの名無しさん mailto:sage [2014/10/30(木) 23:35:51.46 ID:P+CVnAvq] strcatから
235 名前:デフォルトの名無しさん mailto:sage [2014/10/31(金) 07:25:38.16 ID:oaAdI0DZ] char*pTest="test"; sprintf(pTest,"%dok.",i); みたいな前任者のソースで発狂しそうになった事があるわ
236 名前:デフォルトの名無しさん mailto:sage [2014/10/31(金) 10:54:56.54 ID:dyhu2CEA] char *p; *p=0;
237 名前:デフォルトの名無しさん mailto:sage [2014/10/31(金) 11:29:29.39 ID:9c95bT0v] int *n; *n = 5;
238 名前:デフォルトの名無しさん [2014/10/31(金) 14:35:54.19 ID:xFSA8QSJ] sprintf() で使われる予定の文字列長を事前に返してくれる関数はありますか? たとえば int i = 12345678901234567890; char *pTest = "test"; sprintf(pTest,"%dok.",i); の場合 int len = hoge(pTest,"%dok.",i); で len に 23 が代入されるみたいな
239 名前:デフォルトの名無しさん mailto:sage [2014/10/31(金) 15:05:51.16 ID:aPk8p0sK] 無いから大目にバッファ取っとけ
240 名前:デフォルトの名無しさん mailto:sage [2014/10/31(金) 15:07:29.36 ID:9c95bT0v] C99のsnprintf使えよ
241 名前:デフォルトの名無しさん mailto:sage [2014/10/31(金) 15:08:03.96 ID:0xcgHm3e] snprintf 最後の\0は含まない
242 名前:デフォルトの名無しさん mailto:sage [2014/10/31(金) 16:21:28.51 ID:NwqKHC4I] >>238 どうしてもということなら、fprintf()の戻り値が出力サイズだからそれが使える。 どこにも出力したくないなら、ナルデバイス(/dev/null)に出力すればいい。
243 名前:デフォルトの名無しさん mailto:sage [2014/10/31(金) 16:39:23.70 ID:nkl0tAlX] >>237 プログラマになってからなんと1年半これでやってました。まじ 不思議に動くから困るw
244 名前:デフォルトの名無しさん mailto:sage [2014/10/31(金) 16:56:33.07 ID:NwqKHC4I] Christ!
245 名前:デフォルトの名無しさん mailto:sage [2014/10/31(金) 17:55:53.28 ID:pV90KxjZ] >>238 len = scprintf("%dok.", i); でよくね?
246 名前:デフォルトの名無しさん mailto:sage [2014/10/31(金) 18:46:43.08 ID:RBA0S+28] eclipseでCをやるとデバックを動かしたあとなのか原因がわかりませんが 全部文字を消してもエラーがでてうごかないとこがあります エラーが出ましたと言われてもどこに出たのかわからないことが多いですし。 一般的なC言語の開発環境というのは何ですか? ecliseってjava用ですよね?
247 名前:デフォルトの名無しさん mailto:sage [2014/10/31(金) 18:49:33.82 ID:ejHWUQeH] どうせこんなこと聞くやつはwindowsだろうし VisualStudioでいい
248 名前:デフォルトの名無しさん mailto:sage [2014/10/31(金) 18:51:35.19 ID:RBA0S+28] win8です。 参考書には30日たつとゆうりょうになると書いてありました
249 名前:デフォルトの名無しさん mailto:sage [2014/10/31(金) 18:54:00.49 ID:GUmb6A97] snprintf? sprintf_sだろjk
250 名前:デフォルトの名無しさん mailto:sage [2014/10/31(金) 18:55:30.09 ID:ejHWUQeH] >>248 んなわけないだろ そんな腐った本は捨てちまえ
251 名前:デフォルトの名無しさん mailto:sage [2014/10/31(金) 19:01:14.02 ID:RBA0S+28] たくさんありすぎてわからないんですが Visual Studio Express 2012 for Windows 8 これでいいんですか?
252 名前:デフォルトの名無しさん mailto:sage [2014/10/31(金) 19:02:42.71 ID:aPk8p0sK] それはストアアプリ用 Visual Studio Express 2013 for desktop を入れろ
253 名前:デフォルトの名無しさん mailto:sage [2014/10/31(金) 19:08:55.24 ID:RBA0S+28] >>252 その単語ででてきます?ないんですけど
254 名前:デフォルトの名無しさん mailto:sage [2014/10/31(金) 19:17:00.52 ID:aPk8p0sK] ttp://www.visualstudio.com/ja-jp/products/visual-studio-express-vs.aspx あるじゃん
255 名前:デフォルトの名無しさん mailto:sage [2014/10/31(金) 19:17:52.99 ID:RBA0S+28] vs2013.3_dskexp_JPN.iso 4.7 GB これでいいんですか?でかすぎません?
256 名前:デフォルトの名無しさん mailto:sage [2014/10/31(金) 19:21:56.81 ID:aPk8p0sK] 開発環境なんてそれぐらいでかいもんだろ
257 名前:デフォルトの名無しさん mailto:sage [2014/10/31(金) 19:30:12.78 ID:RBA0S+28] でかすぎて今日やめとく
258 名前:デフォルトの名無しさん mailto:sage [2014/10/31(金) 20:44:50.80 ID:0cCeEQ17] DVD1枚分に余計なものぶち込みまくってるからだ
259 名前:デフォルトの名無しさん mailto:sage [2014/10/31(金) 21:22:53.88 ID:zWE6Wm7I] webinstallしろよ 何台にもインストールするのでなければisoダンロードするひつようない
260 名前:デフォルトの名無しさん mailto:sage [2014/10/31(金) 21:29:31.50 ID:RBA0S+28] >>259 ネットに常につなげないんですが一度いれるとずっとつかえます? Microsoft Visual Studio Express 2013 with Update 3 for Web これですか?
261 名前:デフォルトの名無しさん mailto:sage [2014/10/31(金) 21:56:31.25 ID:DZaV0AiJ] dequeってvectorよりlistに近い?
262 名前:デフォルトの名無しさん mailto:sage [2014/10/31(金) 22:01:12.06 ID:DZaV0AiJ] んなわけないですね なんでreserveがないでしょうか?
263 名前:デフォルトの名無しさん mailto:sage [2014/10/31(金) 22:04:04.93 ID:aPk8p0sK] dequeのどの領域をreserveする気だ
264 名前:デフォルトの名無しさん mailto:sage [2014/10/31(金) 22:07:20.53 ID:DZaV0AiJ] リングバッファのサイズ
265 名前:デフォルトの名無しさん mailto:sage [2014/10/31(金) 22:15:35.68 ID:aPk8p0sK] リングバッファで実装されているとは限らないし 先頭末尾への追加は定数時間なんだから内部のサイズを気にする必要はないだろ
266 名前:デフォルトの名無しさん mailto:sage [2014/10/31(金) 22:20:43.67 ID:DZaV0AiJ] バッファサイズを増やすときにコストがかかるのはvectorと違わないと思ったんだけど、違うの?
267 名前:デフォルトの名無しさん mailto:sage [2014/10/31(金) 22:25:06.47 ID:aPk8p0sK] vectorみたいに領域拡張時のコピーのコストはかからないよ
268 名前:デフォルトの名無しさん mailto:sage [2014/10/31(金) 22:27:18.29 ID:DZaV0AiJ] それは何故?
269 名前:デフォルトの名無しさん mailto:sage [2014/10/31(金) 22:34:12.21 ID:aPk8p0sK] std::list<std::vector<int>> list; list.emplace_back(); とするのに元から持ってる領域のコピーなんて起きないだろ?
270 名前:デフォルトの名無しさん mailto:sage [2014/10/31(金) 22:39:37.24 ID:DZaV0AiJ] そういう実装なら確かに
271 名前:デフォルトの名無しさん mailto:sage [2014/10/31(金) 23:11:06.70 ID:1hv4dreP] dequeはvectorと違ってはメモリ領域の連続性の保障いらないし
272 名前:デフォルトの名無しさん mailto:sage [2014/10/31(金) 23:32:52.05 ID:nkl0tAlX] 最初と最後が管理できれば中身も途中もどうでもいいデクの棒
273 名前:デフォルトの名無しさん mailto:sage [2014/11/01(土) 00:12:16.03 ID:6A68v5BH] dequeはリングバッファでの実装が多いのか? 俺が昔実装したときはvectorのリストでやったな リングバッファだとリアロケーションが必要になったとき時間食うだろ
274 名前:デフォルトの名無しさん mailto:sage [2014/11/01(土) 05:02:10.51 ID:9q09lipk] 常に倍のサイズに拡張していけば平均時間は定数だな
275 名前:デフォルトの名無しさん mailto:sage [2014/11/01(土) 09:09:51.03 ID:N73zy/Fb] 頭良いな
276 名前:デフォルトの名無しさん mailto:sage [2014/11/01(土) 09:15:58.85 ID:oG951rSt] C言語で文字を扱うのって普通やらないんですか?
277 名前:デフォルトの名無しさん mailto:sage [2014/11/01(土) 09:31:36.25 ID:+aIx/l6K] C言語は文字列を扱うために造られた言語だよ
278 名前:デフォルトの名無しさん mailto:sage [2014/11/01(土) 09:40:26.49 ID:6Mb2wx73] 動的配列の面倒くささの一例として文字列が出たからと言って、文字列をやらないって理由にはならないよ
279 名前:デフォルトの名無しさん mailto:sage [2014/11/01(土) 13:56:35.43 ID:BAlmKsTx] めんどうですよね文字だけ
280 名前:デフォルトの名無しさん mailto:sage [2014/11/01(土) 14:02:13.63 ID:hS36Mqce] そら、40年前に当時のコンピュータを前提に設計された言語なんだから、 色々面倒なのは仕方ない。
281 名前:デフォルトの名無しさん mailto:sage [2014/11/01(土) 19:03:23.79 ID:NaXltOS/] プラモデルみたいに楽しいとこでもあるかと。 リンクリストや文字列の切り貼りなんかは1回作っちゃえば 使いまわすだけだし、そんなに気にならないかな。
282 名前:デフォルトの名無しさん mailto:sage [2014/11/01(土) 19:05:52.28 ID:bVrmggLn] >>279 string使えば便利やん。
283 名前:デフォルトの名無しさん mailto:sage [2014/11/01(土) 20:09:45.57 ID:T4d0WzbM] 文字セット周辺が嫌
284 名前:デフォルトの名無しさん mailto:sage [2014/11/01(土) 21:43:00.03 ID:uX1Ymwvo] 文字集合 の意味を理解しない人がひとり
285 名前:デフォルトの名無しさん mailto:sage [2014/11/02(日) 08:23:14.96 ID:eOU6dP5q] String *str1="1234565"; String *str2="ちゃんえ"; String *str3="2ちゃん"; String *str4="掲示板"; って文字を連結するにはどうしてます?
286 名前:デフォルトの名無しさん mailto:sage [2014/11/02(日) 08:30:57.52 ID:wiF4o1zx] >>285 Stringの定義は?
287 名前:デフォルトの名無しさん mailto:sage [2014/11/02(日) 08:38:20.63 ID:wiF4o1zx] >>285 auto *s1 = reinterpret_cast<char const *>(str1); auto *s2 = reinterpret_cast<char const *>(str2); auto *s3 = reinterpret_cast<char const *>(str3); auto *s7 = reinterpret_cast<char const *>(str4); std::string 連結された文字列 = std::string(s1) + s2 + s3 +s4;
288 名前:デフォルトの名無しさん mailto:sage [2014/11/02(日) 08:53:48.00 ID:Lqm+QUe+] >>287 型推論知ってる俺ってすげーw
289 名前:デフォルトの名無しさん mailto:sage [2014/11/02(日) 11:44:43.30 ID:++xaUzh4] >>287 C++ でなくてCの場合です
290 名前:デフォルトの名無しさん mailto:sage [2014/11/02(日) 12:13:06.00 ID:CjBmvnJw] strcpy(str, str1); strcat(str, str2); strcat(str, str3); strcat(str, str4); あるいは sprintf(str, "%s%s%s%s%s", str1, str2, str3, str4, str5);
291 名前:デフォルトの名無しさん mailto:sage [2014/11/02(日) 12:23:33.73 ID:vxEoPS2x] >>290 おいおい、その str は十分な広さをもった領域を指していることを断っとかないかんでしょ?
292 名前:デフォルトの名無しさん mailto:sage [2014/11/02(日) 12:29:06.65 ID:xEMkpyWh] str[0] = '\0'; char *strs[4] = {str1, str2, str3, str4}; for (int i = 0; i < 4; i++) { strcat(str, strs[i]); }
293 名前:デフォルトの名無しさん mailto:sage [2014/11/02(日) 12:31:04.69 ID:CjBmvnJw] >>291 それは常識だからな おまいはいちいち「トイレでうんこしたら手あらえよ」って言ってもらうのか?
294 名前:デフォルトの名無しさん mailto:sage [2014/11/02(日) 12:35:18.66 ID:pqNT6JBN] >>290 文字覚えるの面倒だから全部*strでやりたいんですが できなくないんですね
295 名前:デフォルトの名無しさん mailto:sage [2014/11/02(日) 12:38:15.66 ID:UL8V4M8/] 機械に文字覚えさせるのはへたくそなのにね
296 名前:デフォルトの名無しさん mailto:sage [2014/11/02(日) 12:38:16.79 ID:CjBmvnJw] >>294 おまいは質問する前に日本語覚えろ?
297 名前:デフォルトの名無しさん mailto:sage [2014/11/02(日) 12:48:24.63 ID:vxEoPS2x] >>293 常識‥常識ってなんだ?誰が決めたんだ? あとその喩えは極端だね‥あ、俺、ときどき手ぇ洗わんな‥
298 名前:デフォルトの名無しさん mailto:sage [2014/11/02(日) 12:52:53.30 ID:Lqm+QUe+] >>293 strncpyを使ってケツを拭いたつもりになってる奴はよく見かける。
299 名前:デフォルトの名無しさん mailto:sage [2014/11/02(日) 15:01:40.29 ID:xEMkpyWh] 初心者には常識になるまでの学習がまだ足りないだろ
300 名前:デフォルトの名無しさん mailto:sage [2014/11/02(日) 16:40:22.16 ID:nVDzouXs] >>298 くぁしく
301 名前:デフォルトの名無しさん mailto:sage [2014/11/02(日) 16:48:00.05 ID:dpih5k6a] >>300 linuxjm.sourceforge.jp/html/LDP_man-pages/man3/strcpy.3.html ここの「注意」んところに書いてある事を言ってるんだと思う コピー文字数 n に、コピー元文字列の長さより小さい数を指定すると コピー後の文字列がNUL終端されないから その後の操作をしくじるとバッファオーバーランとかやらかす可能性がある
302 名前:デフォルトの名無しさん mailto:sage [2014/11/02(日) 17:08:20.98 ID:02WOdBRy] strncpy(str, src, n); str[n-1] = '\0'; 常にこう書けば安心
303 名前:デフォルトの名無しさん mailto:sage [2014/11/02(日) 17:17:14.55 ID:IOKONguf] strncpy(str, src, n-1);
304 名前:デフォルトの名無しさん mailto:sage [2014/11/02(日) 17:26:40.22 ID:ncE4y5cR] strncpy_s 使えばええやん
305 名前:デフォルトの名無しさん [2014/11/02(日) 17:30:09.68 ID:02WOdBRy] wchar_tでさらに混乱するんですね判ります
306 名前:デフォルトの名無しさん mailto:sage [2014/11/02(日) 17:33:05.70 ID:ncE4y5cR] wcsncpy_s 使えばええやん
307 名前:デフォルトの名無しさん mailto:sage [2014/11/02(日) 18:02:44.51 ID:OTX65kKG] >>303 それでバッファー初期化してなくて何となく動いてる(たまにアクセスエラー吐く)コードは見たことあるな。
308 名前:デフォルトの名無しさん mailto:sage [2014/11/02(日) 18:04:47.40 ID:IOKONguf] >>307 *cpyじゃなくて*catじゃねえ?
309 名前:デフォルトの名無しさん mailto:sage [2014/11/02(日) 18:07:39.12 ID:02WOdBRy] 一度でも str[n-1] の位置に \0 以外のデータが入ったら終わり
310 名前:デフォルトの名無しさん mailto:sage [2014/11/02(日) 18:10:30.47 ID:OTX65kKG] >>308 マジで言ってるなら今まで自分の書いたコード見直した方がいいぞ
311 名前:デフォルトの名無しさん mailto:sage [2014/11/02(日) 18:46:18.61 ID:IOKONguf] 上書きするのに初期化とかアホじゃねーの
312 名前:デフォルトの名無しさん [2014/11/02(日) 18:47:04.33 ID:ncE4y5cR] strcpyなんか使わずに string + string で連結して c_str() すればええやん。
313 名前:デフォルトの名無しさん mailto:sage [2014/11/02(日) 18:51:57.37 ID:OTX65kKG] >>311 >>303 のコードでいつstr[n-1]が上書きされるんだよ
314 名前:デフォルトの名無しさん mailto:sage [2014/11/02(日) 19:34:46.65 ID:3JcJaSAl] FAQ debugモードのときだけ正常に動きます
315 名前:デフォルトの名無しさん mailto:sage [2014/11/02(日) 19:36:03.97 ID:3JcJaSAl] >>312 >>289
316 名前:デフォルトの名無しさん [2014/11/02(日) 20:07:54.18 ID:ncE4y5cR] >>315 ちょっと便利なC++のstringの機能をCから使っても ええんちゃあうん? なんでそないC限定にする必要あるん?
317 名前:デフォルトの名無しさん mailto:sage [2014/11/02(日) 20:43:34.23 ID:FncLEk0A] Cオンリーの世界で動いてるモノもあるんやで
318 名前:デフォルトの名無しさん mailto:sage [2014/11/02(日) 20:51:38.03 ID:ncE4y5cR] どないな世界やねん
319 名前:デフォルトの名無しさん mailto:sage [2014/11/02(日) 20:53:37.50 ID:o/WdZ5W1] linux も windows もそうだね
320 名前:デフォルトの名無しさん mailto:sage [2014/11/02(日) 20:58:54.31 ID:ncE4y5cR] g++もvc++も有るがな。.cを.cpp に変えてビルドするだけやがな。
321 名前:デフォルトの名無しさん mailto:sage [2014/11/02(日) 21:13:47.58 ID:PKN5AcrL] >>289 len = scprintf("%s%s%s%s", str1, str2, str3, str4); len+\0の分で動的確保
322 名前:デフォルトの名無しさん mailto:sage [2014/11/02(日) 21:20:46.80 ID:KDVIc7Px] それだと出力されね? 普通に>>242 じゃだめなの
323 名前:デフォルトの名無しさん mailto:sage [2014/11/02(日) 21:23:09.43 ID:OTX65kKG] カーネルって言いたいんだろ。OSがカーネルだけで出来てるなんて思ってもないだろうにな。
324 名前:デフォルトの名無しさん mailto:sage [2014/11/02(日) 21:30:19.20 ID:o1wy83SR] カーネルおじさん
325 名前:デフォルトの名無しさん mailto:sage [2014/11/02(日) 21:32:53.94 ID:9ZcuQJuu] >>324 が、どうしたんだい?
326 名前:デフォルトの名無しさん mailto:sage [2014/11/02(日) 21:36:27.68 ID:PKN5AcrL] >>322 出力されなかったよ VC++2010 EE コンソール
327 名前:デフォルトの名無しさん mailto:sage [2014/11/02(日) 21:36:41.36 ID:o1wy83SR] 道頓堀に投げ出された
328 名前:デフォルトの名無しさん mailto:sage [2014/11/02(日) 21:45:33.99 ID:o1wy83SR] ワンワン
329 名前:デフォルトの名無しさん mailto:sage [2014/11/02(日) 21:48:28.80 ID:o1wy83SR] にゃんにゃん
330 名前:デフォルトの名無しさん mailto:sage [2014/11/02(日) 21:51:40.16 ID:TOrV8LyY] >>316 釣りじゃないなら、どうやって使うかを書けよ
331 名前: ◆iXuZYxKV0gTb mailto:sage [2014/11/02(日) 21:56:00.20 ID:8weHS+cp] 普通にstrlen、wcslenしろ 引数が文字定数ならコンパイル時に計算されて定数処理される
332 名前:デフォルトの名無しさん mailto:sage [2014/11/02(日) 21:58:29.29 ID:o1wy83SR] (1)拡張子を.cから.cppに変える。 (2)#include <string> (3)std::string型変数を宣言する。連結したい場合は+=や+を使う。 長さを知りたい場合は.size()を使う。 (4)関数で書き込む場合は引数にstd::string&を使い、関数で読み込む場合はconst std::string&を使う。
333 名前:デフォルトの名無しさん mailto:sage [2014/11/02(日) 22:07:48.16 ID:o1wy83SR] (5)リファレンスを嫁
334 名前:デフォルトの名無しさん mailto:sage [2014/11/02(日) 22:10:12.70 ID:TOrV8LyY] >>332 組み込みで C++ サポートしてないケースは想像できないと?
335 名前:デフォルトの名無しさん mailto:sage [2014/11/02(日) 22:15:11.47 ID:EyycLmZD] むしろ組み込みでCやってる人が 文字列の結合程度が本気でわからないはずがない
336 名前:デフォルトの名無しさん [2014/11/02(日) 22:21:44.91 ID:5r/tMWaD] 突然申し訳ないです。 #include <iostream> #include <string> using namespace std; struct person{ string name; int age; }; #define MAX 100 int main(){ person *a[MAX], *tmp; a=new person[MAX]; ...... このようなプログラムを組んだのですが、a=new person[MAX];の行で、 " 'person *' から 'person *[100]' に変換できません。 "と出ました。 以下のプログラムでは'person *[100]'の型を使っているので、 上に書いたプログラムの中で'person *'型となっているところを 'person *[100]'型に直したいのですが、 どう改変すればいいでしょうか。 初心者なので専門用語等はあまりわかりませんが、教えてくださると幸いです。
337 名前:デフォルトの名無しさん mailto:sage [2014/11/02(日) 22:22:02.51 ID:TOrV8LyY] >>335 わかってるから、>>316 がアホみたいって言ってるだけだが
338 名前:デフォルトの名無しさん mailto:sage [2014/11/02(日) 22:39:33.87 ID:IyW8WEC0] >>336 「'person *'型となっているところ」がどこのことを言ってるのかよくわからんけど、 そもそも配列 new なんか使わずに std::vector<person> a(MAX); じゃダメなのか?
339 名前:デフォルトの名無しさん mailto:sage [2014/11/02(日) 22:42:34.26 ID:FncLEk0A] ポインタと配列の関係が理解出来てないみたいだね そこを調べて勉強してみよう
340 名前:デフォルトの名無しさん [2014/11/02(日) 23:24:00.04 ID:5r/tMWaD] >>338 vectorは使うな、とのことでした…… >>339 ggってみますね。ありがとうございます。
341 名前:デフォルトの名無しさん mailto:sage [2014/11/02(日) 23:58:55.53 ID:IyW8WEC0] >>340 習作か。じゃ、まあ、がんばれ。
342 名前:デフォルトの名無しさん mailto:sage [2014/11/03(月) 00:26:13.36 ID:fxU30L/y] 宣言のところをperson *a[MAX]じゃなくperson *aだけにして person *a, *tmp; a=new person[MAX]; じゃちがうのかな
343 名前:デフォルトの名無しさん mailto:sage [2014/11/03(月) 00:43:10.68 ID:Yc5J/idl] まあそうだけど、C/C++使うなら配列とポインタの関係は知るべきだから調べなさい、と わからなくなったらまた聞きに来ればよい
344 名前:デフォルトの名無しさん mailto:sage [2014/11/03(月) 00:50:17.68 ID:qBxjH7bs] >>316 学生あたりが秋月の小規模マイコン(PICとか)とかを趣味・学校の実習で使うとかだとCでってなるだろ。 Win・Linuxの初心者定番プログラムの秋月キャラLCDに文字表示をPICでやろうってしているんじゃないか
345 名前:デフォルトの名無しさん mailto:sage [2014/11/03(月) 00:50:41.64 ID:fxU30L/y] person *a, *tmp; a=(person *)malloc(MAX*sizeof(person)); やっぱりmallocの方が本質は理解できると思う
346 名前:デフォルトの名無しさん mailto:sage [2014/11/03(月) 01:00:42.49 ID:wj4A8VFW] vectorはダメなのにstringはいいのか じゃあ代わりにdequeでもlistでもいいんじゃないの
347 名前:デフォルトの名無しさん mailto:sage [2014/11/03(月) 01:05:17.67 ID:GHCh+c9h] >>345 その代わりC++は一ミリも理解してないって自分で証明しちゃってるしね
348 名前:デフォルトの名無しさん mailto:sage [2014/11/03(月) 01:07:26.10 ID:I0t195PW] >>345 mallocじゃコンストラクタが呼ばれないから 危ないだろう
349 名前:デフォルトの名無しさん mailto:sage [2014/11/03(月) 01:14:59.31 ID:GHCh+c9h] C++学ぶのに配列newとか不要だよな
350 名前:デフォルトの名無しさん mailto:sage [2014/11/03(月) 01:15:51.50 ID:gzxZLKcA] 俺はmallocーfreeが好きや。 メモリをガバッと確保してる感じが 伝わって来るのが快感。
351 名前:デフォルトの名無しさん mailto:sage [2014/11/03(月) 01:38:22.42 ID:1QJRaIFf] C++使えるならSTL使った方が楽だよ その環境でパフォーマンスが問題になるようなことなさそうだし スマートポインタとコンテナでロジック以外の思考を外せるし ただ、基礎学習ならきちっとCやってメモリ管理するのがええよ 後で他の言語やるときの品質が段違いになる まあPCアプリもやる組み込みプログラマの一意見だけども、基礎がちゃんとしてないやつは品質もクソだよ
352 名前:デフォルトの名無しさん mailto:sage [2014/11/03(月) 02:14:02.65 ID:C1Q+kNpr] 今時STLとかどんな糞環境だよ 20世紀からタイムスリップでもしてきたか?
353 名前:デフォルトの名無しさん mailto:sage [2014/11/03(月) 02:26:04.38 ID:GHCh+c9h] また沸いた。標準ライブラリに含まれてるのはSTLじゃねえよ厨
354 名前:デフォルトの名無しさん mailto:sage [2014/11/03(月) 02:38:09.75 ID:wj4A8VFW] 以下STLがあーだーこーだ言うレスが10は付きます
355 名前:デフォルトの名無しさん mailto:sage [2014/11/03(月) 02:42:16.69 ID:f1DnjkKs] >>345 最近の数学では × MAX * sizeof(person) ○ sizeof(person) * MAX らしいな
356 名前:デフォルトの名無しさん mailto:sage [2014/11/03(月) 05:19:13.40 ID:VWaLlR99] >>351 同意します
357 名前:デフォルトの名無しさん mailto:sage [2014/11/03(月) 05:38:31.91 ID:gykicciK] >>353 誤りを指摘されても事実を受け入れられない人は プログラミングに向いていない
358 名前:デフォルトの名無しさん mailto:sage [2014/11/03(月) 05:43:09.00 ID:GHCh+c9h] >>357 en.m.wikipedia.org/wiki/Standard_Template_Library
359 名前:デフォルトの名無しさん mailto:sage [2014/11/03(月) 05:44:08.77 ID:GHCh+c9h] >>357 こっちでやってくれ
360 名前:デフォルトの名無しさん mailto:sage [2014/11/03(月) 05:48:04.61 ID:VWaLlR99] >>357 同意します
361 名前:デフォルトの名無しさん mailto:sage [2014/11/03(月) 05:54:09.09 ID:MMft+ZKk] >>350 つ sbrk
362 名前:デフォルトの名無しさん mailto:sage [2014/11/03(月) 05:59:44.27 ID:UGbZfCjU] >>357 世の中訂正しなければならない誤りだらけで大変ですね! 頑張って下さい!
363 名前:デフォルトの名無しさん mailto:sage [2014/11/03(月) 06:01:10.58 ID:wfj2dgwM] >>358 嘘ソースの代名詞のWikipediaですら「STLは標準C++ライブラリに影響を与えた」と まともなこと書いてるなw こっちでやってくれといいつつ自滅ソースのレスを投下するマッチポンプ乙
364 名前:デフォルトの名無しさん mailto:sage [2014/11/03(月) 06:06:29.94 ID:GHCh+c9h] >>363 実装の欄に書いてあるの見れないの?
365 名前:デフォルトの名無しさん mailto:sage [2014/11/03(月) 06:16:12.28 ID:GHCh+c9h] >>363 そもそもWikipediaをソースとして出したんじゃねえよ。 そんなにそれが大事な事なら正しいソースを出典に明記して修正しろっていってんだよ。
366 名前:デフォルトの名無しさん mailto:sage [2014/11/03(月) 07:53:51.00 ID:QwIS5woN] strstream とか sstream とかいつも STLと標準C++テンプレートライブラリのどっちがどっちだっけになる
367 名前:デフォルトの名無しさん mailto:sage [2014/11/03(月) 07:59:27.90 ID:i5YIlJSL] 元凶はiostreamだな 混ぜるな危険
368 名前:デフォルトの名無しさん mailto:sage [2014/11/03(月) 08:57:12.20 ID:gonBAC+u] Cでって言ってるのにC++使えは答えじゃない
369 名前:デフォルトの名無しさん mailto:sage [2014/11/03(月) 09:08:00.19 ID:i5YIlJSL] インターフェースだけCにして内部はC++でも良いんじゃね
370 名前:デフォルトの名無しさん mailto:sage [2014/11/03(月) 10:23:04.08 ID:Fo7mazF8] とりあえず貼っとくか。 〜姉妹スレより〜 ・STLは標準化前の遺物派 (ステパノフのアレ、もしくはSGIのアレ) ・コンテナ、イテレーター、アルゴ、ファンクタ のみSTL派(string含まず) ・stringもSTL派(iostream含まず) ・テンプレートは全てSTL派 ・C++の標準ライブラリは全てSTL派 ・なんとなくライブラリは全てSTL派 「化石のSTLは標準ライブラリのコンテナの基礎となった」 が正しい。 標準ライブラリには「ここはSTL」という説明はなく また化石STLと標準ライブラリの類似部分とは完全に一致でもない
371 名前:デフォルトの名無しさん mailto:sage [2014/11/03(月) 10:42:57.49 ID:KYPXUM4w] ここはCとC++が共存すれのはずだが C++使いが我が物顔でC++の文法やライブラリを これ見よがしに貼り付けるKUSOSURE
372 名前:デフォルトの名無しさん [2014/11/03(月) 10:50:30.70 ID:Avy9gAi6] 2ちゃんに何を求めるかは人それぞれ
373 名前:デフォルトの名無しさん mailto:sage [2014/11/03(月) 10:54:39.21 ID:A+2eW2k6] 複数の関数で使う再帰呼び出し回数監視クラス、みたいなのを作りたいんですが template<class T>class Counter { static int _count; public : Counter(){_count++;} ~Counter(){_count--;} int getCount()const{return _count;} }; 複数の関数で呼び出した場合_countを共有しないようにtemplateを使って何とか出来ないかと考えてますが なにかよい方法ありませんかね?
374 名前:デフォルトの名無しさん mailto:sage [2014/11/03(月) 10:55:27.70 ID:GHCh+c9h] C言語だけのスレあったはずだから、C言語を求めるならそっちに行けばいいんじゃね?
375 名前:デフォルトの名無しさん mailto:sage [2014/11/03(月) 11:07:26.39 ID:LFWM4IX/] 環境依存な話で、Cを外す理由がわからない
376 名前:デフォルトの名無しさん mailto:sage [2014/11/03(月) 11:14:19.86 ID:wj4A8VFW] >>373 普通はそんなことせず回数を引数として渡す
377 名前:デフォルトの名無しさん mailto:sage [2014/11/03(月) 11:18:05.98 ID:GHCh+c9h] >>373 struct scoped_counter { int& count_; scoped_counter(int &c):count_(c){count_++;} ~scoped_counter(){count_--;} }; void f() { thread_local int recursive_count=0; scoped_counter c(recursive_count); std::cout<<recursive_count<<std::endl; f(); }
378 名前:デフォルトの名無しさん mailto:sage [2014/11/03(月) 11:28:20.75 ID:A+2eW2k6] >>376 そう言われればそうですね >>377 thread_localを初めて知りました ありがとうございます