C++相談室 part105 (888)
TOP カテ一覧 スレ一覧 2ch元 削除依頼 ▼
Excel VBA 質問スレ Part32 (377)
ゲームプログラムなら俺に聞け29 (289)
Excel VBA 質問スレ Part32 (377)
【初心者歓迎】C/C++室 Ver.87【環境依存OK】 (371)
Lisp Scheme Part37 (268)
【上流社会】MSDNサブスクリプション総合【最先端】 (652)
C++相談室 part105
1 :2013/09/29 〜 最終レス :2013/10/28 C++に関する質問やら話題やらはこちらへどうぞ。 ただし質問の前にはFAQに一通り目を通してください。 IDE (VC++など)などの使い方の質問はその開発環境のスレに お願いします。 前スレ C++相談室 part104 http://toro.2ch.net/test/read.cgi/tech/1376714664/ このスレもよろしくね。 【初心者歓迎】C/C++室 Ver.86【環境依存OK】 http://toro.2ch.net/test/read.cgi/tech/1379742800/ 次期規格C++1yはこちら C++11/C++1y 18 http://toro.2ch.net/test/read.cgi/tech/1365073520/ ■長いソースを貼るときはここへ。■ http://codepad.org/ http://ideone.com/
2 : シンボル名等にhogeを使用することを 不快と感じる人がいます 無用な争いを避けるため、hogeの使用はなるべく控えて下さい
3 : >>2 基地外に敗北宣言
4 : 別に当たり前のことだと思うけど。 禁止しないって挑発して 荒らされ続けてる方が負けだろ。
5 : 特定のつづりをどうして禁止にする必要があるの? コンピュータやコンパイラが誤動作でもするの?
6 : >>5 日本語読めないの?ばかなの? 「不快と感じる人がいます」 「不快と感じる人がいます」 「不快と感じる人がいます」 「不快と感じる人がいます」 世の中オマエが基準じゃねーんだよバカ
7 : 見なければいいのに
8 : LLVM、C++1Y 標準ライブラリをフル実装 http://news.mynavi.jp/news/2013/09/27/027/index.html
9 : hogeと書くだけで誰かを不快に感じさせられるとかめっちゃ楽しいじゃん hogeって書くだけでいいんだぜ hogeって
10 : 「傷つくのでやめて下さい」 弱者の立場を利用してどんな意見でも通そうとする “繊細チンピラ” が増加
11 : ヘイトスピーチ()されていると主張するあいつらと同じ立場の人間だろう
12 : hogeしばき隊の皆さん、ご苦労さまです
13 : その考えだとhogeコピペは荒らしではないな
14 : hogeコピペはhoge特会の朝鮮ヤクザ
15 : STLつかうと一気に実行ファイルサイズが10倍に?! 環境によるだろ。 俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力 ランタイムを使用するようにして使っているが、例えばstd::vectorを 使っても使わない時と比べ10Kほどしか増えない すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。 C1010: プリコンパイル済みヘッダーの検索中に予期しない EOF を検出しました。 とかいうエラーが出るんだけどこれってどうすればいいの? #include <stdafx.h> 後R。 言葉が悪いな。それで教えているつもりか。 まぁヒントぐらいにはなったな。 うむごくろう。
16 : >>4 スルーすれば良いだけだろが。 hoge使ったコード後に荒らしレスが付いてもそれスルーすれば問題ない。 hoge禁止にしたところで荒らしが正気に戻るわけじゃ無いし、荒らしは荒らしだ。 >>5 禁止することで荒らしが優越感に浸れる。 禁止しろ禁止する必要はないの議論を眺めて荒らしが優越感に浸れる。 そして次の優越感を求めて同じことを繰り返す。 禁止も推奨もせず、荒らしはひたすらスルーすればそれだけで良い。
17 : >>2 うっせえ long unko;
18 : hogeは日本の美しい伝統なのに止めれって朝鮮系スレだな
19 : hogeはヘイトスピーチと同じで朝鮮系が発狂するから禁止 奴らに基地っぷりはすごすぎるからね ついでに2chは朝鮮系人のためのたまり場で朝鮮ルールが適用される
20 : Cは朝鮮のC
21 : Kじゃないのか
22 : これは恥ずかしいw いくら何でもwww
23 : hogeは捕鯨を推奨してると受け取られても仕方がないのでやめましょう 日本人は、やっぱり野蛮ですね
24 : std::vector<int> ここからintを取り出すことって出来るかね
25 : 取り出すって何だ どういう動作になってほしいわけ?
26 : std::vector<> つ int 取り出しました
27 : std::vector<int>::value_type って意味か?
28 : >>27 あざっす
29 : そんなのあったのか ただ使い所がわかんねえ
30 : >>23 代わりに whale 使えば?
31 : vector<int>をテンプレートの型引数に取って、その要素を返そうと思って ↓みたいに template <typename T> typename T::value_type Foo(T v) {
32 : tab押してenter押したんですね、わかります まあ使い所はわかった
33 : >>23 捕鯨は悪いことという前提を、我々は承認していません。 ストレートに2点お尋ねします。 ・なぜ鯨を殺してはいけないのですか? ・なぜ人を殺してはいけないのですか? 殺してはいけないから、殺してはいけない、というような循環論法は相手をしません。 客観的な、つまりは敵対的な論客を論破できる、簡潔明瞭な説明を求めます。 2点目に、水も漏らさぬ完全な論理がないことは、つまり より制限の厳しい1点目に答えられるわけがないと見なします。
34 : イスラム教 「自分が人から危害を受けたくなければ、誰にも危害を加えないことである。」(ムハンマドの遺言) ユダヤ教 「あなたにとって好ましくないことをあなたの隣人に対してするな。」 (ダビデの末裔を称したファリサイ派のラビ、ヒルレルの言葉)、 「自分が嫌なことは、ほかのだれにもしてはならない」(『トビト記』4章15節) ヒンドゥー教 「人が他人からしてもらいたくないと思ういかなることも他人にしてはいけない」(『マハーバーラタ』5:15:17) イエス・キリスト 「人にしてもらいたいと思うことは何でも、あなたがたも人にしなさい」(『マタイによる福音書』7章12節) 「他人にしてもらいたいと思うような行為をせよ」という内容の倫理学的言明 黄金律(おうごんりつ、英: Golden Rule) Wikipedia
35 : >>33 横レスですが、新日本クジラ研究会です。 クジラをRことが悪いのではなく、クジラが減る環境は人類の生存確率が 減る環境だからです。 つまり、人類を存続させるためにクジラを保護しようとしています。 クジラはある意味目安にすぎません。 大型であり、環境にナイーブであり、人類と同じ哺乳類です。 そもそも、環境保護は人類のエゴに基づく行動です。 もしも神様と通信できたなら、今すぐ環境保護をやめろと言われるでしょう。 いずれ人類が滅び、新しい種が覇権を握るのが自然の摂理だからです。 あなたは鯨を滅ぼしますか?
36 : こいつ、seikyou だろ?
37 : いいえ、新日本クジラ研究会です。 たった今できました。 会員は僕一人です。
38 : >>35 滅ぼすのはダメだろう。でも必要に応じて殺傷し食べるのは問題ないだろう 死刑のように、必要に応じて人間を殺しても問題ないのと同じでクジラも必要に応じて殺傷してよいはずだ
39 : 実は俺も人間というのを食べてたくてね
40 : >>39 殺さずに肉だけ食べるなら問題ないはず 自分で肉を切り取ってもらえば傷害罪にも該当しないだろう
41 : >>35 「減る」とはどのくらいですか? たとえばミンククジラは、総量に対してどのくらいがバランスよい負荷でしょうか? 研究職の方でしたらおわかりでしょうが、生物の「誕生」と「死」のバランスを崩すと 結果が絶滅あるいは異常発生、食物連鎖間に波及ということが起きます。 人類への影響もこの「波及」に含まれます。 ミンククジラの、全量はどのくらいで、年あたりどのくらい誕生し死すのが理想ですか? 全量は現状どのくらいで、年あたりどのくらい誕生し死んでいますか? 理想と現実の差はどうなっていますか? 追試可能の定量的な数値でお答え下さい。普通の人には聞けませんが、あなたは研究者。 死すべき量を人為的に本来より増やし、その差分をいただくのが養殖です。 いけすを使うか、海洋そのものを使うか、発育段階で切り替えるか、それは様々です。 この点で、養豚場の屠畜と、捕鯨は、何が違いますか? あなたは人類を餓死させますか?
42 : >>41 申し訳ありません。 研究会は5分前に解散いたしました。 僕は今ではただの人なのです。 ただの人としてで良ければ会話に参加させていただきたいと思います。 僕は以前からずっと不思議だったのです。 西洋の人たちは自然に生きる生物を殺して食べることを野蛮でかわいそうといいます。 しかし、飼育した生物を殺して食べるのは当然と考えます。 日本人である僕には納得がいきませんでした。 食べられるために生まれてくるほうがずっと残酷です。 ところが、日本でいう建前と本音に基づき考えるとどうでしょう。 可愛そうというのが建前で、本音は利己主義です。 つまりすべてが自己の利益のための行動だったら。 家畜は殺しても生態系への影響がない。 つまり食べていいのです。 飼育して食べるのは人類の存続可能性という点でエコロジーなのです。
43 : おまえらhogeネタで盛り上がりすぎ。ワロタ
44 : >>42 解散されたのですか、それは大変でしたね。 で、解散された事実はどこかに公示または報道されていますか? いい加減なこと言われたら困りますよ! (これが失礼なら反駁して下さい) 北米大陸で太古から自然に生きてきたネイティブを食べもせずに(そう信じていますが) Rのは可哀想ではないんですかね、あの人たちには。 アフリカ大陸で太古から自然に生きてきたネグロイドを食べもせずに 殴打・致死させるのは可哀想ではないんですかね、あの人たちは。 日本列島で太古から自然に生きてきた黄色い猿の非戦闘員を 焼夷弾と原子爆弾で焼きRのは可哀想ではないんですかね。 ベトナムで枯れ葉剤を使って見るも無惨な子供が大勢理不尽になくなりました。 これらすべてがキリスト教の神が命じたことなら、 イエスは悪魔でキリスト教はカルト教団です。 アメリカは我が国以上に大量の鯨を殺害し、不要部分を捨てていました。 我が国の捕鯨産業は「捨てるところがない」ことを誇っていました。 ビキニ環礁の水爆でどのくらいの鯨が死んだのかご存知ですか? ■ 可 哀 想 で は な か っ た ん で す か ! ? ■ もう一度聞きます。 鯨は可哀想なのか減るのか、もはや論点が二転三転しています。 あなたがたは結局、牛肉を売りつけたいだけじゃないんですか? 動物質だけではありません。モンサントの脅威も我々は警戒しています。 「元」研究者さん、あなたが失職した本当の理由は何でしょうかね? これは皮肉です
45 : >>44 可愛そうなのか減るのか、そして宗教との関連。 実はこのことについても考えたことがあるのです。 ところでもう寝るので、続きは明日帰ってきてから書きたいと思います。
46 : >>45 おまえが飼ってる犬でも猫でもインコでも、食ってからのコメントが聞きたい 本当にそれが当然で、野生動物をRことよりも理性的なのか イエスさんが、そうしろと命じたのかどうか? アインシュタインは言った「月は私が見ているときにしか、そこにないのかね」と あなたたちはイエスがそう命じるから、1秒まえまでの家族の血肉をすするのか ジョークでしたじゃ済まんぞ おのれら原爆を悔いるどころか誇っとんのやろ で、イランや北朝鮮が同じことをするのはいかんのやったなあ 高出力型の弾頭が散布界の小ささによって役割を失うのは周知の事実や 「元」研究者とはいえ、勤続年数まで5秒とは言わんだろう まともな答えをせにゃ、ここには「フルボッコされたカス」と記録されるだけやぞ 身元も割れやすくなってるから、お得意さんにも迷惑かかるわなあ このへんの感覚が壊れてるやつを俺は人間と思っていない
47 : どうでもいいけど上げんなカス
48 : なーぜー? (かなりふざけた口調 荒らしがふせげるのーお? ねーぼーやあ ぼーやみたいな情弱がだまったからって何にどう役立つのかねー 君も京大の霊長類研究所の方だろ、察するにwww
49 : >>47 ←こいつきっしょ
50 : 気晴らしにしてももっと痴的に >>44 >家畜は殺しても生態系への影響がない。つまり食べていいのです。飼育して食べるのは人類の存続可能性という点でエコロジー ◎85点
51 : >>49 ←こいつきっしょ
52 : >>51 なんでキモい言われたか気付いてないんだろ? だっせw
53 : >>50 家畜って育てるだけで環境負荷が結構あったよね。 温室効果ガスとしてのメタンは家畜の牛が結構な量を排出してたはず。
54 : 温室効果ガス出しちゃいけないの? 必要なら別に出してもいいだろバーカ
55 : お前らいい加減にしとけ ここはム板だ プログラム以外の話をしたいのなら他の板に行け
56 : なんでキモい言われたか気付いてないんだろ? だっせw
57 : hogeは伸びる
58 : class A{ A(void) {} } と class B{ B(void) {} } の違いを教えてください
59 : ミスりました! class A { A) { } } と class B { B(void) { } } の違いです
60 : A()とB(void)の違いってことかな 何も違わない
61 : >>59 書き込むボタンを押す前に3回冷水をかぶれ
62 : 引数なしのコンストラクタでクラスhogeをインスタンス化するとき、 hoge hoge_(); とすると関数宣言との区別がつかないためエラーになると思いますが、 コンパイラあるいはC++の規格によってはエラーにならない場合もあるのでしょうか?
63 : ねーよ
64 : >エラーになる そんなコンパイラあるの?
65 : hoge非対応コンパイラならなるんじゃないのか
66 : あるクラスのfirendクラス中にネストクラス書いた場合、そのネストクラスもfriendでいいの? VC++6だとコンパイル通らなかったけど・・・ http://ideone.com/p9KSV8
67 : >>60 ありがとうございます!
68 : >>66 自己解決、C++11ならOKなのね
69 : IDEが悪いのか、コードが悪いのか、ライブラリが悪いのか切り分けすらできていないので、 とりあえずここに書きます。 環境: eclipse Juno + CDT 症状: 構造体のメンバーが同じメモリアドレスを参照する typedef struct test_s{ char* errorCode; char* attrib[MaxNum]; char users[buffSize]; char data[buffSize]; char DN[MaxHeaderByte]; char CN[MaxHeaderByte]; // char hogehoge[buffSize]; }TEST_S; 上記のような構造体を作り、インスタンス化すると、 DNとCNの参照先メモリアドレスが同一になり、CNを変えるとDNも変わります。 そもそも、そんなことってあり? 構造体で宣言した直後で確認をとっておりますので、DNにCNのポインタが入るなどの行為は 行われていないはずです。 だれか助けてください 補足: その直前に意味不明なsegmentation fail が起こっておりました。 確実に問題のないインタネット上のサンプルでも( たとえば、初心者向けstrcpy のサンプルコード) などでも、がんがんprintf あたりで発生してました。現在はなぜだか直っている模様
70 : eclipseのデバッガなんてその程度よ
71 : VCで試してみたら
72 : >>69 コードは問題ないね http://codepad.org/trifD8VE
73 : >>71 >>72 ありがとう。 VC++では問題無しです まあ、なんだかって感じですが //順番変えただけ char* errorCode; char* attrib[MaxNum]; char CN[MaxHeaderByte]; char users[buffSize]; char data[buffSize]; char DN[MaxHeaderByte]; だとうまくいくw プログラムでも同じ症状なので、コンパイラあたりが匂うけど、 デバッガではないような気がします ライブラリってことはないとは思うんですが、 segumentation 違反のこともあるので、うむむです。
74 : pthreadのスタックサイズが、小さすぎるとか
75 : >>74 調べた。 なるほどです。 POSIXではなく、Windowsアプリなんだけど、関係ないとも言い切れないですねぇ コンパイルオプションかなんかで指定するんでしょうか?
76 : >>69 定数の値はどうなってるの?gccならサイズ0の配列を定義可能だぞ
77 : >>76 ちょいと大きめです。 4096を基本で実行しているんですが それでもエラーが出ます。 本来なら64kbyte程度は取りたいと思っていますが、
78 : >>77 コンパイラ何使ってんの?
79 : ヒープにとってみれば?
80 : 一度クリーンして再ビルド
81 : >>80 クリーンは、これでもか、ってほどやってる >>79 なる ちょっとやってみる >>78 MinGW のgcc
82 : #undef MaxHeaderByte #define MaxHeaderByte 0
83 : sizeof(struct test_s) sizeof(TEST_S) この2つを見てからでないと信用出来ないw
84 : >>63-65 え、エラーにならないってことですか? コンパイラはGCC4.7.2ですが、以下のコードは最初の@が何も出力されません。 関数宣言とみなされるからだと思ってたんですが、違うのですか? #include <iostream> using namespace std; class hoge { public: hoge() { cout << "hoge" << endl; } hoge(int i) { cout << "hoge(int i)" << endl; } }; int main() { hoge obj1(); // @何も出力されず hoge obj2; // Ahoge と出力 hoge obj(1); // Bhoge(int i) と出力 }
85 : で?それがお前の環境じゃエラーになるの?
86 : すみません、間違えました!>>84 のコードはコンパイルエラーにはなりません。 実は人からもらったソースコードをいじってて、引数なしのコンストラクタを hoge obj1(); などとインスタンス化するとよく分からないコンパイルエラーになり、調べてみた次第です。 というわけで、質問を以下のように変更させてください。 「引数なしのコンストラクタを呼んでインスタンス化する際は、 hoge obj1(); などと ()を付けては駄目で、単に hoge obj1; とする」というのは、C++の仕様でしょうか?
87 : >>86 "C++の"とか言う割に、new使うって発想ないんだなあ 何がやりたいんだろう
88 : 仕様を聞きたいんじゃね?
89 : stdafx.hを使うメリットって何ですか?
90 : > C++の仕様でしょうか? 当たり前だろ。バカ。 コンパイラはお前より一億倍C++の仕様に詳しいので、コンパイラがエラーを出すなら、 それはC++の規格違反である可能性が極めて高い。
91 : >>87 今時 C++ で生 new なんてほとんど使わないと思うが...
92 : newはoldになったのだ…
93 : C++11だと、hoge obj{}; hoge obj{1};って書けるようになるから、hoge obj; hoge obj(1);が 非対称な感じでイヤーンな人は不満解消すんじゃね?w
94 : >>89 事故解決
95 : >>93 誰もhoge使うような気違いにはきいてないから hoge厨は黙ってろ
96 : C++11書いてる人でhoge obj{}、hoge obj{1}って書いてる人どれくらいいるんだろう
97 : >>96 よう恥知らず。
98 : >>96 そもそもC++11で書いてる人が殆どいない気がする。 でも、C++11が当たり前になったら初期化子といえば{}ってくらい定着すると思う。 初期化子リストとも統一感あるし、見目麗しいじゃないかw
99 : お前ら仕事で11使ってるの?
100 : >>96 hogeもそんな書き方してるのもお前だけだよ 他と違う俺カッケーとか思ってんの?
101 : >>99 C++14が出る頃にはC++11も使われてるかもな
102 : NG推奨:hoge 半角にして登録してください。
103 : とっくにしてる
104 : >>102 全角で書く意味がわからん
105 : >>104 半角で書いたら>>102 もNGされてしまう
106 : hoge回避で荒らしがいなくなるのならそれでいいよ 別にこだわりもないし。 くだらんことでスレ使うなよ
107 : NG推奨じゃなくて必須だろ
108 : そもそも何で意味の分からないhogeを使うのか意味不明 メタ構文変数ならmetakoubunhensuと書けよ
109 : 意味が分からないから使うんだろ
110 : >>109 意味が分からないってそう意味じゃないと思う。 特定の使用目的のない部屋の入り口のドアに「hoge」って書いてあったら意味が分からないだろう、 だとしたらそこは「空き部屋」と書いておくべきだ。 特定の使用目的がないのならそのことを明示しておかなければならない。
111 : 2つのstd::set<DATA>を合併させる一番簡単な方法は?
112 : std::mapの合併もお願いします。
113 : >>109 意味が分からない物をどうやって使うんだ? 識別子を付与して再利用してる時点で中身の意味はわかってるだろう
114 : >>111 ,112 obj2.insert(obj1.begin(), obj1.end());
115 : >>114 ありがとうございます。 C++10のマニュアル(chm形式)がダウンロードできる場所を教えて下さい。
116 : >>109 =意味が分からないものを使う基地害
117 : アンチhoge厨に構うな。 どうしても構っちゃうよ!って奴はNGにでもしとけ。
118 : >>117 お前に命令される筋合いはない
119 : >>118 お手!
120 : >>105 いや、だから >>102 を NG してる奴が >>102 見る必要あるんか?
121 : >>118 house
122 : h o g e
123 : >>120 お座り!
124 : >>98 初期化子リストと統一感あるから困るところもあるけど まあそんなもんか
125 : C++11が当たり前になるのはいつなんだ 仕事ではお目にかかったことないわ
126 : プライベートではC++11で書いてて、仕事のプロジェクトではC++03前提だけど、そのコンパイラは C++0x以上C++11未満をサポートしてるなんて場合、何がOKで何がNGなのかこんがらがったり しないんだろうか?
127 : Hoge++11
128 : >>126 悩んだらC++0xも封印してC++03とかで書けば良いんでない? 仕事のプロジェクトではC++0x〜C++11とか全員が把握してる保証がないと厳しいし、 C++0xっていう策定段階の仕様を業務でバリバリ使うってのも違和感があるんだが。 # そして只のC+αな言語として使われる、と。
129 : C++0x時代が長かったから・・・
130 : 普通はC++03が前提ならコンパイラオプションでそう指定する。 だからなにが良くてなにが悪いかはコンパイラ様が教えてくれる。 混乱などしない。黙ってコンパイラ様のいうことを聞いてればいいw
131 : そういえば先日出たVisual C++ 2013 RCは おまえらスルーなの?
132 : 普通に使ってる
133 : 使ってるけど、話題にするほどのネタがない>VC++13RC C++11のサポート不完全なままだし、VSスレでもう散々愚痴った後だし('A`)
134 : 3年目にして initializer_list がようやくサポートされたんでしょ?
135 : 今さらVC++6やらされて涙目だったけど、古いboostとSTLPort使ったら捗った
136 : 1からシステムを作る話が出てるのですが、 C++とC#でどちらにしようか決めかねています C#の方が簡単みたいでいずれ.netもOSと統合するとかなんとか 今後C#の方が需要が高くなるんでしょうか? 私としてはC++の方が汎用性もあっていいと思うのですが 今後の事を考えたらどっちがいいのかなぁ?
137 : 何のシステムかによるでしょw
138 : 横から質問ですが、C#の1つしか継承できない仕様は実際問題になったりしないんですか? 単にそういうもんだと思って使うだけの話ですか?
139 : 多重継承なんて何に使うの。インターフェースでいいじゃん
140 : 多重継承はミックスインに使う 非常に有用な機能
141 : 多重継承っていうとPowerPlantってイメージ
142 : >>136 C++を汎用性がーという理由で使うと汎用性以前にバグとメモリリークで死ぬ C++の生きる領域は、大規模開発するけど、どうしてもパフォーマンスに妥協できないという場面 C#は素人に優しくプロに便利だが、実質Microsoft縛りだし、 パフォーマンスは限界がある 生産性と安全性はC++と比べてはいけないレベル C++/CLIは現実と戦いすぎなのでさっさと滅びろ >>138 多重継承が最適解な特定の問題領域でだけ、ちょっと困る 普段は気にもしない
143 : >>142 メモリリークはスマポ使えばいいじゃない
144 : C#が遅いのは.netのせい?それとも言語仕様的にしょうがないの?
145 : そういえばJavaがC++より遅いと書いたら「証拠を示せ」と発狂している奴がいたな
146 : ファンクタを受けとる関数はヘッダに公開しないといけないのですか? 公開しないで隠蔽する何かいい方法ありませんか?
147 : うーん、ファンクタじゃなく関数ポインタで受け取るしかないような
148 : 独学なんですがプロセスメモリ検索の方法が今いち分かりません サーチ部分を以下の用に組んだのですがどうしても遅くなってしまいます 高速でメモリサーチするにはどうしたらいいんでしょうか -------------------------------------------- DWORD Address = 0x2AF00000; //検索開始アドレス INT i; //ループ用 DWORD MemoryBuff; for(i=0;i<10000000;i++) { ReadProcessMemory(hProc, (LPVOID)(Address+i), &MemoryBuff, 4, NULL); if (MemoryBuff == 0xD6FA88){ cout <<Address+i << endl; } }
149 : >>146 std::function や boost::function を使う。
150 : >>149 質問主じゃないけど、できたわサンクス。勉強になった http://ideone.com/o2Ltut
151 : >>148 目的がわからないから何とも言えんが、 WindowsならAPIで特定の種類の使用領域一覧を頂いてから、 狙い撃ちで検索するとか。 詳細がほしいならWin32APIスレでどーぞ。
152 : WTLのウインドウみたいなのって多重継承以外で解決できるの?
153 : 委譲でなんとかすんじゃね
154 : >>150 function使わなくてもいいなそれ http://ideone.com/sW0Bom
155 : >>154 なんでtestの実装を隠蔽してんだよcall_eachの実装を隠蔽しろよw
156 : http://ideone.com/eSoskg call_each_impl いらなくね?
157 : >>155 ??
158 : >>157 > ファンクタを受けとる関数はヘッダに公開しないといけないのですか? 公開しないで隠蔽する何かいい方法ありませんか? 154はファンクタを受けとる関数(call_each)がテンプレート関数として公開されてる。
159 : このあたりで勘違いしたType erasure厨が湧く予感
160 : 単因子論か、難しいな
161 : C++ referenceのCHM作ったよ。 https://dl.dropboxusercontent.com/u/72753355/cppreference-20111225.zip
162 : PCがぶっ壊れた
163 : 同じところにソースとしてもっと適切なアーカイブあっただろ・・・
164 : 要らね http://en.cppreference.com/w/Cppreference:Archives
165 : せっかく作ったのに無駄骨過ぎて糞わろたwwww
166 : 下の方が新しかったのか、間違えた。作り直しだ
167 : この人電子ゴミ作るのが好きなの? つーか隔離スレから出てくるな
168 : 電子ウンコ製造機
169 : 自動運子マシン
170 : 片、ほげやったんだ
171 : void foo(const int* p); int bar(); があったとして、 foo(&bar()); はテンポラリアドレスアクセス? void foo(const int& a); にして foo(bar()); にすれば安全?
172 : まずコンパイルが通るコードを貼れ 後者の質問はYes
173 : 例えば、 void foo(const int* p) { printf("%d",*p); } int bar(){return 0;} foo(&bar()); とか?
174 : 一つ前のレスも読めないのかhoge/foo/bar使いは
175 : どうせVCでも使ってるんだろ
176 : >>175 自己紹介乙w
177 : Visual C++はコンパイルエラーになるから違うな
178 : >>175 C++の標準がClangの状況でVCって奴は非常にすくないからな Winの標準のC#でやれば良いのにな
179 : >>178 の日本語の意味がわからない
180 : >>179 祖国に帰れば良い
181 : >>180 >日本語の意味がわからない 日本人なら意味が分らないってレスだけど 在日人のhoge基地は"日本語の意味"ってなるからな。 日本語って書く時点で在日だし。
182 : >>181 お前が在日という事は良く分かった だから帰れ
183 : ネトウヨは巣に帰れ
184 : 図星か 朝鮮人www
185 : 日本人なら >日本語の意味がわからない ではなく 意味がわからない って書くよな。 つまり>>179 は日本語を母国語としな人ってことだよな
186 : 日本語として成立はしているが意味が分からない じゃなくて 日本語として成立しているように思えない ってことだろ
187 : わたし日本語わりません マネーマネーマネー
188 : 屁理屈はどうでもいいから日本から出てけやゴミ虫チョン
189 : >C++の標準がClangの状況 これはどういう意味なんだ?
190 : >>189 在日には理解できない。知り合いの日本人に聞いてね
191 : そうかここ半年ほどム板の治安が悪いと思ってたら朝鮮人Gが湧いていたのか
192 : 標準の意味を崩して使ってるような。。。
193 : ようなって、おまえ日本人か?
194 : 疑問符を半角で打つ奴は朝鮮人
195 : >>178 が正しい日本語を使えない(=在日の可能性が高い)ことは間違いない
196 : プログラマは底辺職業って言われるだけあって、日本語が禄にできない在日でもなれる職業になっているからな 日本語が駄目な在日、基地外、低脳でもなれるって どうしてこうなったんだ
197 : おまえ「日本語が禄にできない」て それ漢字間違ってるから
198 : ロクサーヌ」(Roxanne)は、ポリスによる曲であり、1978年にシングルとして発売
199 : c++でado.netを使わずに(.netの機能を使わずに) sqlserverを操作したいのですが、ado.net関連の参考サイトしか見つからずにいます 主にsqlserverに接続して大量のデータを更新したいと思っています。 sqlserverにあるテーブル同士ではなく、別の場所にあるaccessにローカルテーブルとして データを持っているので、accessからデータを取ってきて 一件ずつ更新する方法しかないのかと思っているのですが、 何かいい方法がありますでしょうか? sql narive client なるものがあるようですが、 実際ado.netを使わない場合、どのような手法がとられているのでしょうか?
200 : まず実装言語を見直すことだね
201 : >>199 ODBCじゃだめなの?
202 : なんでこんな殺伐としてんだろうなこのスレ ここの連中はLinux板のくだ質住民の爪の垢でも煎じて飲めばいいよ
203 : ここはwin32api、C/C++スレよりずーっと良いよ これらのスレ見るとプログラムやっている奴には基地が多いって実感する
204 : そうだね
205 : >>202 ID漏れの一件以来、ニュー速あたりからタバンに大勢逃げ込んでる。
206 : タバン? 他板の読み間違い?
207 : タイタ大迷惑だな
208 : C++ reference (CHMファイル)ができたよ。 https://dl.dropboxusercontent.com/u/72753355/cppreference-20130510-0.zip
209 : ttp://www.google.com/webhp?q=site:cppreference.com+%22 をブクマークしとけばいいだけの話
210 : まあWebブラウザより速いしね
211 : 消されるかもしれないから落とした方が それより日本語訳しろよ
212 : どうせクソみたいな訳にしかならんから、英語のままのほうがマシ
213 : こういう仕事が出来るだけ片山はマシだろ Qなんか本当に糞だぞ
214 : 機械翻訳できるならやってほしい さらに両方を縦繋ぎにできれば和訳で大筋を掴んでから英語を読むという素敵なことができる
215 : >>208 片基地外、chmにして勝手に不特定多数に配布してよいのか
216 : 面白そうだから通報しとくw
217 : CC BY-SAだろアホが
218 : 害基地はこえーな
219 : >>215-216 基地外晒し上げ
220 : >>205 タリバンに見えた
221 : 実質、タリバンと同じ連中じゃない
222 : 質問です C++11より導入された<thread>のsleep_for()は精度的にはどんなもんでしょうか 精度を気にするならマルチスレッドにしてもnanosleep()のほうが無難ですかね ちなみに環境はlinux(art-linuxというリアルタイムOS)を利用しています 別スレのほうが適していれば誘導お願いします
223 : ミリセコンドはあるんじゃね
224 : こいつはsleep_forの引数がなんだとおもってるんだろう
225 : >>222 各APIの精度って時点で環境依存だしコンパイラでは把握できないだろ。 リアルタイム用途ならAPIリファレンス読んで自分で選べば良いかと。
226 : >>225 >コンパイラでは把握できない why?
227 : struct hoge { enum{ foo = 111 }; }; hoge h; char c[ h.foo ]; int main() { hoge o; char d[ o.foo ]; } gccだとcがダメでdがOKでした vc2010だとcもdもOKでした。どれが正しいですか
228 : エラー張れよ
229 : array bound is not an integer constant
230 : >>222 正規の情報源で聞けば ttp://www.dh.aist.go.jp/jp/research/assist/ART-Linux/ ttp://sourceforge.net/projects/art-linux/
231 : >>227 なぜ配列の大きさを hoge::foo にしないの?
232 : >>231 しないからです
233 : if(hoge){ std::thread th(func); } 等とすると折角建てたスレッドの変数が スコープを抜けると共に死んでしまうので困っています スレッドを建てるかどうかを選択するのが目的です どうするのが正解なんでしょうか
234 : ひとまず std::thread th; if(){ std::thread tmp(func); th=std::move(tmp); } としていますが、もっとスマートな方法ないですかね
235 : std::async使えよ
236 : >>222 2chなら ttp://engawa.2ch.net/test/read.cgi/linux/1270842134/ ttp://uni.2ch.net/robot/
237 : >>227 ↑ hoge厨の典型例 エラーすら貼らずに質問する知能の低さ
238 : >>227 お前生きてるだけで迷惑なんだからせめて回線切って引きこもってろよ。
239 : >>232 左様か
240 : >>233 なんだ、>>233 じゃなくて変数が氏ぬのか つまんね
241 : delete >>233 []
242 : 何でhoge使う奴って例外なく馬鹿なの? DQNが車高下げて爆音で音楽かける傾向があるように hoge使いは馬鹿な傾向があるの?
243 : std::auto_ptr<std::thread> th; if (hage) th.reset(new thread(func));
244 : >>233-234 お前もう来なくていいよ
245 : >>242 基地外・馬鹿だからhogeを使っている これは遺伝子に組み込まれた特性。本人はどうすることもできないし、治療もできない
246 : 解説やサンプルにhoge使ってる本って本当に悪本しかないよな。 よく分からずにあんな本をつかまされる初学者が可哀想。
247 : hogeを使っている本なんてあるのか
248 : auto_ptr何ソレ?あうとなの?
249 : アウトはドイツでは自動車のこと
250 : auto_ptrはdeprecatedだろ せめてunique_ptr使えや
251 : >>250 そうなのか
252 : std::threadがあればunique_ptr使えるはずだろうしな
253 : >>251 自己レス C++11以降ね
254 : >>247 本屋で本漁ってるとちょくちょく見かける 本の質は・・・・言わなくても分かるなw
255 : なんていうか可哀想なやつだな・・・ >>226 たとえばWindowsだとどのタイマAPIがどの物理的ハードウェアに依存するかは、 ACPIだかなんだかのドライバとして何がインストールされたか等、環境依存で変わる。 完全に環境依存な話で、それを吸収するラッパとかコンパイラの提供領分を超えている。 やるとしたらSDKの仕事だが、SDKが提供してるのが精度が環境依存なAPI止まりなわけで…
256 : >>233 ってマジで頭悪そう
257 : 11じゃなければboost::scoped_ptrだな
258 : C++11使ったことないけど まとめるとこんな漢字? std::unique_ptr<std::thread> th; if (h0ge) th.reset(new thread(func)); なんかかっこ悪いような。もっと良いやり方ないのか
259 : >>258 hoge厨はさっさと消えろ NG回避までして荒らしたいのか マジで根性腐ってるな
260 : おもちゃが喋った!
261 : ifの中でインスタンス確保以外しないなら thread t(hoge ? thread(func) : thread()); とかでよかろ
262 : >>258 お前いい加減迷惑だよ。
263 : >>261 落書きは便所の壁にやってろキチガイ。
264 : >>258 おーい、ラムダが入ってねえぞ
265 : >>261 なんでヴァカが回答者気取ってるの? お前の書き込みは価値がないんだから早く回線切れよ
266 : C++ referenceの自動翻訳に挑戦してみました: https://dl.dropboxusercontent.com/u/72753355/cppreference-en2ja-20130510-0.zip <p>...</p>と<li>...</li>のみです。
267 : >>266 スレをゴミで荒らさないでください
268 : >>267 が>>266 にアンカうってるけどあぼーんで見えない CスレにいるキチガイっていったらQZかな
269 : >>268 Yes
270 : やっぱりQZはカスだな
271 : perlでいうところの use List::Util qw(min); $min = min map { $_->value() } @a; ということをしたい場合。 つまり、配列の中の各要素の特定のメンバーの中での最小値を求めたい場合。 C++だとどういうやり方がナウいんですか?
272 : int min = 0; for (auto n : list) min = std::min(min, n);
273 : 0点
274 : >>272 listの要素は全て負数なの? っていうかアルゴリズム系のにラムダ突っ込むとかそういうのは無いのか。
275 : ああ0から始めたらダメだな アホだったわすまん
276 : >>272 この手の問題は第一要素を初期値にしなければならない
277 : 要素数ゼロにしてクラッシュさせる遊び
278 : Google→[std::min_element]
279 : minの部分はmin_elementでいけるけど mapの部分はどうするんだろ
280 : やりたいことは特定のメンバの最小値を求めることでしょ それならmin_elementにラムダを渡せばいいんじゃない? もしそのメンバしか比較対象にならないなら、クラスに < 演算子を定義しておくとか
281 : >>280 いきなりmin_elementに渡したら、元の要素のコピーコンストラクターが動くぞ。
282 : std::list<std::vector<char> > a; この型に対してperlでいうところの min_size = min map { $_->size() } a; これをやろうとして、 min_elementにa.begin()やa.end()を渡すと std::vector<char>のコピーコンストラクターが動く?
283 : >>281 何の事?もしかしてラムダの引数のこと? それなら普通にconst参照にすれば良いよね
284 : つまり int min = std::min_element(list.begin(), list.end(), [](const A& x,const A& y){ return x.value<y.value; })->value;
285 : hogeはC++の知識すらたいしてないのに最新のC++11を使うからな
286 : ラムダなしだと大掛かりになりそうだな
287 : ラムダなしで単純に書こうとしても無理だろ
288 : win32アプリケーションを使うことになったのですが、 文字列の扱いについて、 char std::string CString TCHAR PLCSTR PLCTSRT 等ありすぎて何が何だか分からなくなるのですが、 皆さんはどのように使い分けてるのですか? また、通常使うのはどの型を使ってコードを書かれますか?
289 : WTL使ってるから普段はCString使ってる LPCTSTRとかは単なるtypedefだからわからないってことはないだろ
290 : >>288 C++はstring
291 : #ifdef _UNICODE typedef wchar_t TCHAR; #else typedef char TCHAR; #endif こういうこと。wchar_tはワイド文字用で2バイト以上ある stringやCStringはこれらの文字列を楽に使えるようにしたテンプレートクラス だから普段はこうやってTCHARを使っとくのが無難 typedef std::basic_string<TCHAR> tstring; tstring str = _T("hoge");
292 : stringが内部で勝手にメモリ確保しまくるんだけどどうやって制御すればいいhoge?
293 : reserveすればいいhoge
294 : >>292 制御って、なにをしたい?
295 : size見ろよhage
296 : hogeユーザーはキチガイなんので 構わないで下さい
297 : 分かったhoge
298 : ポインタはsignedですか?unsignedですか?
299 : アドレスに符号付けてどうすんの?
300 : ポインターはポインターだ。 signedとか何イミフなこと言ってんの?
301 : >>300 出た 本物の馬鹿が
302 : hogeユーザーはキチガイが多くて困ります。
303 : unsigned float
304 : hoge使いには基地外しかいない ポンタはアドレスですよ、アドレス
305 : unsigned同士の減算の結果はunsignedになると定まっている。 ポインター同士の減算の結果はsignedである。 ゆえにポインターはsignedである。
306 : >>304 そのアドレスを意味する数値の型はsignedかunsignedかという話しだろ
307 : >>304 >ポンタはアドレス 脳内定義乙
308 : 碁石の表はどっちかみたいな問題か
309 : 三時半は深夜か早朝か みたいなものか
310 : >>298 は、質問としてはまとも >>300 からだよ、アフォ流れになったのは
311 : >>299 もデコーダ組めない手合いと踏んでいる
312 : ポンタ? ローソンのカードか?
313 : intptr_t とかにしとけ
314 : 配列で a[0]をさすポンタ - a[10]をさすポンタ したらマイナスになるからな
315 : ローソンで毎回必ずポイントカードはお餅ですかと聞かれてじゃまくさいんだけど、 ポンタなんか持ってる奴いるのか? あんなもの持ってどうするんだ?
316 : >>315 聞かれるよな。あれなんか特典あるのか ローソンはアニメ関連のこと色々やっているからポンタ貯めてアニメ関連景品ゲット!とか
317 : >>314 その結果って既にぽんたじゃねーし
318 : ポンタクラスの-演算はsigned intを返すからね
319 : >>308 そりゃ歩・飛・角が表で、と・龍・馬が裏だろう?
320 : >>315 ローソン系のパスポートアカウントだと思えば。 あれあったら、wifiつかえるんだろ? ド近所にないからしらんのだが(ちょっといったらある)
321 : アドレスと言っていいのはvoidポンタだけだと思う
322 : >>314 ひいた結果が何かチップセレクトするのかよ?
323 : つーかコンビニって多少高いけど背に腹は代えられない便利さで使ってるからポイントカードとかウザいんだよ ポイントカードはお持ちですか?じゃねーよ 1秒でも早く会計済ませろボンクラ ローソンのカードは作ったけど財布に入れとくとかさばるから結局家に放置してる
324 : クレカ難民は相応しい板へどうぞ
325 : ポイントカードはうざくないけど初音ミクとのコラボがうざい。 何でアニヲタに迎合してんの?
326 : >>325 コンビニで金落とすのはヲタだからな 犬のエサみたいなコンビニ弁当とか何の肉か分からないフライドフードとか ああいう体に悪い原価率の低いものを嬉しそうに買ってくれるのはヲタなんだよ ビールとかしか買わない客よりよっぽどありがたいお客様なんだよ
327 : ファミチキおいひぃれすぅ(^ω^)
328 : ミクコラボはファミマで、ローソンはアニメ全般でコラボしてるイメージ Lチキバーガーうまいですー
329 : おまえら糞レスばかりしてんじゃねーよ
330 : でも「日本のおいしい食卓」とかいわれると普通にむかつくぜ
331 : >>310 他人を誹謗するだけで 論理的な反論ができないようだな
332 : >ポインタはsignedですか?unsignedですか? どっちでもいいので好きなほうを ポインタ演算で有効なのは差をとることのみだったかと
333 : ファミチキとLチキ どっちが好き?
334 : おっぱい
335 : >>333 ファミチキとLチキの差は正直よく分からない サンクスのフライドチキンなら違いは分かるけども
336 : フライドチキンよりからあげくんのほうが旨い
337 : ケンタ
338 : ケンタは骨があって食べにくい。
339 : ケンタッキーは衣が旨い
340 : ケンタはクリスマスに行くものというイメージが強すぎて 普段は行く気がしない
341 : ケンタのイメージ戦略は間違ってると思うよ
342 : クリスマスは七面鳥だからな ケンタの露骨なマーケティングに騙されず普段からケンタを食べましょう
343 : ケンタの公式サイト行ったらトップページでCMが3本連続で流れたんだけど、 2本目のCMがどう見てもブラック企業のサービス残業中に見えるんだ。 「サービス残業のお供にケンタッキー」みたいなイメージで推していく感じなのかな。
344 : 皆ケンタって素手で食べてる? 俺は油でべた付くのが嫌で紙に巻いて食べてたけど今は箸で食べてる
345 : ケンタ専用の改造フォーク使ってる。
346 : >>345 興味ある うp
347 : >>344 想像するだけでうんざりする 絶対食いたくねーよ ファミチキでいいや
348 : >>344 素手だな 但し必ずテイクアウトにして家で食ってる
349 : C++erの食う肉。ネタか いいぞもっとやれww 軟弱者の少ないはずのスレだからな、こういうネタもいいわな
350 : 案外肉食男子が多いんだな
351 : ケンタは実はコールスローがめちゃくちゃ美味しいから一回食ってみ って書こうと思ったけど 肉食系の流れになったから書けなくなった
352 : バカにしてたサイドメニューが意外にうまいのと メインは油断しすぎがあそこだね 普通のFCに「上」を入れると受けるんじゃないかなあ 塩辛い練り物なしで、いい部位だけくれるやつ
353 : なんなのケンタの近寄りがたいオーラ。 ここはカップル用のクリスマスグッズ専門店ですからお帰りください と言われそうな雰囲気。
354 : クリスマスでもないのにケンタッキー行くなんて 特別な理由がないと気後れするよ うちの田舎では パーティー用総菜店だもの
355 : プログラマーといえばジャンクフードとタバコ
356 : ケンタッキーってネクタイしなくても入れる? 断られない?
357 : ドカタはジャンクフード、アニメ、エロゲーが定番
358 : c++初心者なのですが勉強用としてc++ primerを購入しようとおもっているのですが リファレンスとしてc++ programming languageも買った方がいいでしょうか?
359 : 高橋麻奈著やさしいC++から始めるといいでしょう。
360 : >>359 他の言語学ぶ時の経験からしっかりと細かいところまで解説してあるような本を買ったほうが 困らないと思っているのとc++11のしっかりとした解説がある本がいいのでその本だと少しイメージが違います
361 : そういうことなら、今は待て時期が悪いとしか言いようがない。 言いようがない。 そんな本があるならおれも知りたいが、もしかして洋書の話だったのか。
362 : >>361 購入しようとしているとは洋書ですね もちろん別に洋書にこだわってはいないので和書で良い物がおればそちらでも大丈夫ですが
363 : ないね。 むしろ海外の掲示板で質問したほうがいいでしょう。 国内でバラエティに富む洋書を制覇した人は少ないでしょうから。 立ち読みできる種類も最近は限られてるしね。
364 : そういえば、ビニール袋を破って中を見ても怒られない必殺技あるけど知りたい?
365 : なるほど。。 では適当な海外掲示板見つけて質問してきます
366 : ビルド中のたばこがうまくてC++を使う
367 : ビルド中の飲酒が止められない。
368 : 精度や有効数字が低くていいので標準より高速なMathライブラリってありませんか?
369 : glm
370 : 自作Stackクラスの感想を頂きたいのですが ここに晒してもいいでしょうか?
371 : 晒す前に留意した点を三行にまとめてみ
372 : >>371 C++の勉強のために作成したので、なるべく言語の機能を使って書くようにした 出来るだけ読みやすいコードになるように努めた std::stack を真似ようとしたが、一部機能をあきらめた 以上です
373 : すきにしろよ
374 : スタック本体 :Stack.h http://codepad.org/l5bj3rnq 実行処理と結果 :StackTest.cpp http://codepad.org/iUfTnJc7 あざす
375 : お好みでっていう話になるけど、インラインのメンバのコードはクラス定義の中に書いちゃってもいいかなと思った。
376 : explicit CStack(); explicitいらなくね virtual ~CStack(); virtualいらなくね void Push(const TYPE& data);参照にしてよ const TYPE& Top() const; TYPE& Top(); 2つつくれ
377 : >>375 言われるとクラス定義の中に書いたほうが見やすいかも・・・でもやっぱり好みなんですかね >>376 explicitがいらないのは余分なコンストラクタが無いから(?)でしょうか? この宣言の使い分けがよくわからないです
378 : 通常のnewは失敗したらstd::bad_alloc例外を投げるから↓は意味ない newnode = new CStackNode<TYPE>( data ); if (newnode == NULL) exit(0);
379 : newの後のnullチェックとか どんな教育受けたんだ
380 : 42行目。要素数TYPEはおかしくね?CStack<std::string>とかできないぞ TYPE m_elems;// スタックの要素数
381 : >>378 知りませんでした。消しておきます >>379 社員(?)としての教育は受けてないです >>380 ああ、本当ですね・・・。気付きませんでした。これはint型でいいんですかね
382 : こういうアホが作ったプログラムを使うハメになるユーザーが悲劇すぎる。
383 : >>375 ,376,378,379,380 ありがとうございました! Stack.h: http://codepad.org/EWtOBQZS
384 : クラス名にCプリフィックスやメンバ変数にm_プリフィックス付けるのをまずヤメレ
385 : >>379 C++創成期の教育じゃね
386 : VC6まではNULL返しやがったからな ハンドラ変更で対処はできるが 今でもnew(std::nothrow)なら許す
387 : なぜビルド中に酒がのめるんだ? 自宅でやってること?
388 : 残業中なら多少飲んでも怒られない会社が多い
389 : > if (m_topnode == false) { これはカスだな 勝手にexitしてるのもカス operator= が追記みたいな動きになってるのもカス operator=の途中で例外発生したら中途半端な状態で壊れたようになって戻ってくるのもカス。 考え無しで設計してるだろ。コンテナてのはそういうものじゃねーよ。
390 : >>387 hogeの会社では普通だよ
391 : Effective C++ だか Exceptional C++ だったかのシリーズに、 当時理想とされた実装と注意点がまとめられているから、 まずはそれを読むのがいいべさなあ
392 : >>384 メンバ変数スコープのノーテーションはよく使われると思うんですけどそれは(スタイルの押し付けでは?) STL 接尾辞アンダースコア Microsoft C++ (新/旧) 接頭辞m_ Google C++ 接尾辞アンダースコア Apple Cocoa 接尾辞アンダースコア Mozzila C++ 接頭辞m(+キャメルケース)
393 : 名前はかぶりやすいけど、マイクロソフト方式だと何も考えなくても かぶらない。 そこは評価できる。
394 : Pop の戻りはvoidにすべき operator = の戻りは*thisにすべき
395 : 接尾アンダースコアって意外と多いんだな。 個人的には視認しにくくてあまり好きじゃないのだが。
396 : ハーブ・サッター hoge_ ジェイソン・グレゴリー m_hoge
397 : >>395 >個人的には視認しにくくてあまり好きじゃないのだが。 お前もそうなのか。俺もだ。m_が実質会社の標準でそれが染み付いているんだろうが
398 : メンバ変数にプリフィックス/ポストフィックス付けたいならアンダースコア(1個)プリフィックスが一番合理的 補完機能(VSのインテリセンスとか)があるIDEなら_を押すとメンバ変数の一覧が出てくる アンダースコアの次は必ず小文字にしておけばC++の規約ともぶつからない
399 : 付けたくないです
400 : >>398 先頭アンダースコアは規約で予約扱い
401 : アンダースコア始まりのルールってめんどくさいから一律で禁止してるわ
402 : >>400 それはグローバルネームスペースでの話 それ以外では「_大文字〜」が禁止されているが_の次が小文字なら問題ない
403 : すんません訂正 × グローバルネームスペース ○ グローバルスコープ
404 : >>394 素晴らしい
405 : アンダースコアのプリフィクスやポストフィクスって「普通は触らない、内部で使うもの」 という感じがあって、少なくともpublicメンバには付けたくないな。
406 : void CStack<TYPE>::swap(const CStack<TYPE>& ); と void swap(const CStack<TYPE>&, const CStack<TYPE>&) を実装すべし
407 : >>406 なぜconst
408 : さっぱり分らんが、moveさせるためじゃないの
409 : 素で間違えたw コピペで楽しすぎた
410 : >>407 hoge使いだから
411 : 経験の浅い奴しか間違えない間違え方
412 : いや、元のソースのコピーコンストラクタをコピっただけだから 言い訳スマソ
413 : swapはthrow()が必須
414 : >>412 アフォなアンチhogehogeちゃんに謝る必要は無い
415 : swapでthrowすんな Effective C++ Item 25
416 : >>406 void CStack<TYPE>::swap(CStack<TYPE>&) throw(); これ以外許さんからな
417 : >>383 コピーアサインメントでリークしてるだロー
418 : >>383 つうか、これ面白くなるし、お前にとっても得がたい貴重な意見を得られるだろうけど、残念ながらその話はいくらでも長くなる。 stackクラス作ってみる専用スレがあってもいいんじゃないか。
419 : >>416 それはメンバ関数の場合だよね? 何のためにCStack<TYPE>を戻すの? あとグローバル関数もあっていいんだよね? そっちもCStack<TYPE>を戻せと? 質問ばかりでスマソ
420 : >>417 の指摘に対応するため、operator = はコピーコンストラクタとswapを組み合わせて実装すべし
421 : >>384 ,389,394,405,406,415,416,417,418,420 あざす!おはようございます if (m_topnode == NULL)で何を返せばいいのかわかりませんでした throw()(例外処理?)をまだ学んでないのでswapはあきらめました >>417 ,418 コピーアサインメントでスタックを空にするようにしました 例外知らない奴がスレなんか立てていいのでしょうか Stack.h: http://codepad.org/1ggMEDl0
422 : > if (m_topnode == NULL)で何を返せばいいのかわかりませんでした Popの戻りをvoidにするのはそういう理由じゃないぞ。 学んでなくてもthrow()と書くだけだからできるだろ。 あとどうもNULLは気持ち悪い。
423 : C++ の可変長引数テンプレートで質問です。 再帰を使って型安全なprintfもどきは書けたんですが、 JavaのString.formatでいう "%2$d %1$s" のような 参照する引数のオフセットを指定する機能をつけるにはどうしたらいいでしょうか。
424 : >>422 あざす! Stack.h : http://codepad.org/SnU4PfBT 実行結果 : http://codepad.org/fQAZlzmd
425 : 引数をtupleにぶち込んでインデクスでgetとか?試してないけど
426 : >>419 戻すとは?
427 : >>424 コンテナのoperator=は template <typename TYPE> Stack<TYPE>& Stack<TYPE> ::operator =(const Stack<TYPE>& rother) { Stack<TYPE>(rother).swap(*this); return *this; } このやり方しか許されないので
428 : >>423 boost::formatのソースみりゃいいと思うよ
429 : >>420 ,427 単純に自身にコピーするのはだめですか? >>417 氏が指摘されたリークに関係あるのでしょうか
430 : >>426 見間違い。忘れてください。 ::が見えないくらい目が悪いので。
431 : >>429 コピーの途中で例外発生して処理中断になったとき、お前のやり方だと中途半端な未完成構造ができるから危ない
432 : >>428 ありがとうございます。 boost::formatってコレでしょうか? http://www.boost.org/doc/libs/1_54_0/libs/format/example/sample_formats.cpp variadic templateは使われていないようですが、 variadic templateを使うバージョンもあるのでしょうか?
433 : >>425 ありがとうございます。 可変長引数を受け取ってからtupleに代入して引数の個数を取得するコードは動いたのですが、 コンパイル時に分からないn番目の要素をtupleから取得する方法が分かりませんでした。
434 : >>429 あと今の Stack<TYPE>::Swap の実装だと、 ・失敗する可能性がある ・全く効率的でない という欠陥がある。 >>427 ,431の指摘に対応するためにはここを直さないとダメ。
435 : >>424 初期化子を使えよ。 initなんか消せ。 copyメソッドなんか消せ。 あれを書いていいのはcopy-constructorだけだから、その中に直接書け。
436 : 書き忘れたが Swap ではなく、swap にしろ。 これは些細な問題ではない。
437 : >>424 メンバー関数は全部小文字な。 他のコンテナーと簡単にバトンタッチできるように。
438 : swapはこうだな。これしかない。 template <typename TYPE> void Stack<TYPE>::swap(Stack<TYPE>& rother) throw() { std::swap(m_lownode, rother. m_lownode); std::swap(m_topnode, rother. m_topnode); std::swap(m_elems, rother.m_elems); }
439 : >>423 再帰で std::vector<boost::any> に詰め込めば、後からランダムアクセスできる。 ただし boost::any の type() で typeinfo を調べてから 型ごとに boost::any_cast<T> するあたりから泥臭くなる。 まあCの可変長引数と違って、実行時に型チェックができるだけマシっちゃマシかな
440 : >>439 ありがとうございます。 これなら目的は達成できそうです。
441 : >>427 ,431,434,435,436,437,438 ありがとうございます! Stack.h: http://codepad.org/A8uhjc75 実行結果: http://codepad.org/GpHZht3l
442 : >>440 型を消去せず、保持したまま掘り進めていくことも可能 http://ideone.com/3EcKXa このソースの上の方にある構造体は、index_tupleイディオムを実装するためのもので、タプルを展開して扱う事が出来るようになるのでとても便利
443 : >>441 グローバルな swap関数を用意するのも忘れるなよ。 std::swap をオーバーライドするものとなる。 これがないとせっかく作ったメンバ関数としてのswapの価値が半減する。
444 : >>442 ありがとうございます。 でもコレはどう考えても効率良くないですし、 タプルの一部を参照した後の処理(この例だとcoutへの出力)が探索部分の内側に隠れてしまっていて使いづらいですね。
445 : 2chで質問する時点で効率悪いのにこのアフォは何言ってんの?
446 : こんなこと極めてる段階で、その気になれば(仕上げとして)Cでごりごりっと書けば 効率は出しやすいことくらいわかってるわけで、つまり、何を今さら
447 : >>444 boost::any使うと動的確保が必要になるしRTTIもコストかかるよ、多分関数呼び出しのコストより高いと思う 処理はファンクタを渡せるようにすれば汎用的になるぞ http://ideone.com/nOv2E1
448 : >思う なんだ思う厨か 相変わらずベンチデータもなして糞みたいな妄想を垂れ流してるんだな
449 : 関数呼び出しのコストより確実に高い。嘘だと思うなら検証してみれば? これでオッケー。
450 : 思う厨がソース出さずに確実だと言い張っても痛いだけ
451 : 思うhoge
452 : ベンチマークとりまhoge
453 : http://stackoverflow.com/questions/579887/how-expensive-is-rtti の下の方に、 typeid による型の比較と dynamic_castにほる型の比較 のベンチマークがある。 環境にもよるが typeidの比較が特に高コストだとは言えないようだ。 >>447 のコードはindex_tuple の生成自体は別に遅くないと思うが、 アクセスの度に tuple を parameter pack に変換して端から再帰スキャンするので 引数が多い場合やパラメータに複雑な型が使われている場合は影響があるかもしれない。 末尾再帰最適化が十分に優れている環境はそれほど多くはないだろう。 まあ使うのは >>444 だと思うのでベンチするなり好みで選ぶなり好きにしろや
454 : 質問 あるapiでリエントラントな関数の呼び出しを要求される関数があるのですが FuncA(FuncB) FuncBはリエントラントでなければならない リエントラントというのはグローバルにアクセスしたらリエントラントでなくなる、という説明があったのですが グローバル変数を書き換えないアクセスでもアウトですか?
455 : >>454 int nCalled = 0; void FuncB(){ if( ++nCalled == 1 ){ do{ // do the job that may raise reentrant }while(--nCalled); } } シングルスレッドの処理系ならこんな風にも書けるな。 nCalled にアクセスしている部分は処理系によってはクリティカルセクションで囲むことになるだろう
456 : >>454 アウト
457 : >>456 理由は?
458 : 無難なコードを書け
459 : >>454 書き換えなきゃ即値と同じ
460 : >>455 これでdo while間がエントラントになるということですか?試してみます >>459 ですよね、なんかテキトーな説明が多いような
461 : >>460 外部から書き換えると、物によっては不安定
462 : >>459 理屈上はな。
463 : >>462 では即値として使って問題になる例を。
464 : 全然問題ない 馬鹿を相手するのは無駄
465 : >>463 絶対にタイプミスしない「理屈上」の世界の話は、他所でやってくれ。
466 : >>465 意味が分からない
467 : 今までwin32アプリケーションの開発はしたことがあったのですが、 mfcというものがあると知って使ってみたのですが、 win32とは全然違っていて少し戸惑っています 何かおすすめの書籍か、解説サイトがあれば教えていただけませんか? また、sqlserverを利用したいと思っているのですが、 oledbが廃止になるなんて記事を見まして、何を使おうか迷っています .netは使わない方向で行きたいのですが、 adoもサイトを見た感じですが、おすすめっぽくないのですが、 ado, dao, oledb. odbc等皆さんはどれを使っていますか?
468 : C++erなら、そういうときは、実際の市場のアプリが 何を使ってることが多いか気をつけて見ているといい MFCもあるが、ATLもWTLもあるよ。と言っておく 一頃はdao*.dll がよく載ってたね MDAC必須とかいうアプリも結構あった 今は、sqliteが載ってるやつが多いんじゃないか
469 : >>467 MFCによるWindowsプログラミング
470 : お助けを visual studioを使ってプログラムを書いています ファイルパスとしてUTF 8で文字列が渡されますが、fopen_s(&fp, filepath, "w")で失敗します 恐らく文字コードをOSのエンコーディングにしなければならないものと思われますが 出来上がったものは海外でも使われる可能性があり、utf 8でfopenを行いたいのですが 内部文字コードはどうすれば変更できるのでしょうか?
471 : 諦める
472 : 一応意味不明
473 : >>470 世界で使われるものはUTF-16にするというのがWindowsの考え。 WindowsではUTF-8のMBCSを完全にはサポートしてない。
474 : たいした考えのない質問だとおもうけど
475 : なぜ_wfopen_sを使わない
476 : どうでもよいことかもしれんけど、 char *str char* str どっちが正しいの? どっちが多いの? で、どっちが好き?
477 : 下が好き
478 : 俺は強硬に上 案件により下を指定されることはあっても 本音はまったくブレない
479 : エラーメッセージを繰り返し見続けてると、どうも下が正しいように思えてくる・・・ それを含めて、自分は下なんだけど、 脳内で、 ○メモリの大きさの定義 + どんな変数か ○どんな宣言か + 単なる変数のラベル のどちらとして意識するか、なんだろうけど もっと言えば char *str[] char* str[] だと、上の方が原則に一致してるような気もする
480 : >>479 >char *str[] >char* str[] 整形ツールは上になるな。 char *str[], c2, *c2;など見るとわかるが、*は変数に付く。
481 : int *a, *b, *c; のように一行で宣言するとき意外は下を使ってる C++では下が多数派な気がする
482 : >>480 java だと、char[] str とかいけるでしょ。 配列は、変数に付くはずだけど、cだと変数名の後ろになる char ** はどう説明するの?
483 : >>481 ほんの少しだけ話が反れるけど、 void func( int a, b, c ); ってできないよねぇ。その影響なのかも、とか思っちゃったり。 まあ、>>480 の話が正しいような気もするけど。
484 : char * str だな。
485 : ポインタ型なんだから、char* strの方が直観的だと思う char *str派の人はテンプレートとかプロトタイプ宣言も離すんだろうか void foo<char *>()とかvoid bar(char *)とか
486 : C言語だけ使ってたときは上だった C++使うようになってから俺は下になった
487 : >>484 乗算じゃないんだから離すのはないな
488 : >>485 確かにそうだよね。 ポインタのポインタは、char** なんだから。 だけど、そうすると、>>480 の話と矛盾が出てくる だから関数の引数ではまとめて宣言できない、 ( = つまりまとめて宣言する方がどちらかと言うと例外 ) 七日も知れんけど
489 : 型を意識するとchar* strだけど 複数変数を宣言するときの挙動を考えるとchar *str1, *str2なんだよね 俺は単体の時は型につけるけど、正直どっちでもいい
490 : >>485 宣言としては変数に付くからchar *a、結果得られるaの型はchar*、って思ってる。 コレが気持悪いと思うなら、LPSTRでも使うかって事になると思う。
491 : >>490 変数に付くんだろうか? *a は、メモリが格納される領域を宣言することになるんだよね? int *a と long *a では、同じメモリの大きさを確保するのであって 所詮「a」 はメモリのアドレスにつけられた名前でしかないんじゃないの? *a という変数を用意しているわけじゃないし
492 : 関数の引数の話がでてくる意味がさっぱり分からない
493 : >>491 「*」の修飾の対象が型ではなく変数名って事な。 最終的には全部結合するんだが、演算子の優先順位で型より先に変数名と先に結合してしまうというか。
494 : const char *const *a, * const b;
495 : typedef char* char_ptr; char* str; char_ptr str; typedef char *char_ptr; char *str; char_ptr str; どっち?
496 : readbuf(char* p, size_t n); readbuf(char_ptr p, size_t n); これなら、引数名・変数名を省略するときは、スペースと引数名を消すという統一された処理ができる。 readbuf(char*, size_t); readbuf(char_ptr, size_t); スペースは引数名・変数名にも型名にも含まれず、両者の間にある区切りという位置付けだからそうなる。 この状態に引数名・変数名を足したくなったら、いずれであってもスペースと名前を足せばよい。 ところが readbuf(char *p, size_t n); readbuf(char_ptr p, size_t n); これだと、統一されたルールで変更しようとすると スペースは消せない。 readbuf(char *, size_t ); readbuf(char_ptr , size_t ); こうなる。 要は、引数名・変数名の直前の文字は、それがスペースであっても'*'であっても 全て型名の中に含むということ。 スペースは型名と引数名・変数名の間にある区切りではないのでこうなる。
497 : >>491 配列だとchar str[]がchar[]型になるから、ポインタも同じで、って考えじゃないかね どっちにしろ直観的じゃないから、Cより後の言語ではこんな宣言しないんだろう 配列は無理だけど、ポインタはchar* strって書くことができるんだから、そうした方がベターじゃないかと思うんだが >>492 書き方統一したいのが人情ってもんじゃないかね
498 : 型を記述してんのか、型で修飾された変数を記述してんのか、で使い分けてしまえばどうって事無い。
499 : >>498 関数の引数は両方ですな
500 : >>493 ロジカルですな。 う〜ん >>497 自分もそう思ってるんだけど ただ、 char[] で宣言できてもよさそうなもんだけど
501 : パースの歴史的経緯の問題なだけ。 int*a; int*b; を、 int*a,b; と書けるようにしたかったのなら、 int* a; を必須とする選択も有っただろう。 しかし実際には、 int ary[10]; int x=2; int x=3; int*abc = ary + x * y; のようなパースが難しくなるので、非現実的。
502 : char* const strみたいな場合は、変数に*付けられないな
503 : 見様見真似のときはchar *strで ひとときchar* strをこじらせて 痛い目をみてchar *strにもどる char *strスタイルには避け得ぬバグへの抑止効果があるので絶対に譲れない
504 : >>503 そんな効果ない
505 : >>473-475 ありがとうございます 渡される文字をUTF-16に変換する _wfopen_sを使う 以上2点で解決致しました
506 : お前ら言語仕様を無視して語ってんじゃねーよ *はdeclaratorの一部であって declarationに複数のdeclaratorを書ける文法なんだから int *unko, *kuso; と書くのがすじ
507 : unko = kuso = reinterpret_cast<int*>(506);
508 : ウンすじ と聞いてやってきました
509 : 型名に付ける方がしっくり来るけど素直に変数名の方に付けてる
510 : テンプレートの<int*>を<int *>と書くのは嫌なので int* a; だよ。一貫性が大事
511 : どっちでもわかるから使い分ければいいかなと。
512 : 一貫性言い出したら int* a; なんて a+b / c って書いてるようなもんだぜ?
513 : などと意味不明の供述を繰り返しており
514 : 俺は int * で統一している。 一貫性が大事。 …だが、議論してまで通すほどの内容ではないと思う。 ぶっちゃけ趣味の問題。
515 : #define ptr *
516 : int ptr a = ptr b + ptr c ptr d; 各変数の型を答えよ
517 : >>481 俺がいる C以来、ポインタを定義するといったら、type* だろw と思ってる もちろん既出の通り、異論は認める、ソースファイル単位で、郷に従ってるw
518 : なるほど。 まとめると 宗 教 ってことやね。これが後の前経と後教の宗教戦争を端にした前後南北朝時代である、と。 ○どっちが正しい? 宗教なので・・・ ○どっちが多い? C時代は後教が圧倒的優勢 C++時代に入り前経が勢力を伸ばす ○どっちが好き? C++時代以降を南北朝時代と呼び宗教戦争が激化 ハイブリッド源氏も勢力を伸ばす 邪波教なる宗教も新興し混乱が増す 地域によっては、踏み絵、改宗なども随所で行われている -----以下宗教戦争の続きをどーぞ↓↓↓↓
519 : 血で血を洗う戦いの末、事態は緩やかに妥結に向かう そう、int * a; 教の隆盛である
520 : std::vector<int *> これダサい
521 : みんなー、こっちで雑談始まったよー! 【IT】「C++ よりあらゆる面で優れる」 Facebookが「D言語」の利用を開始、他の大企業も追随か?[10/19] http://uni.2ch.net/test/read.cgi/newsplus/1382142182/
522 : >>521 R
523 : アフィブログの臭いがする
524 : >>521 Facebook よ、お気の毒に
525 : C++信者からすると Dはカス
526 : 関数の戻り値には int* fuck() 変数には int *you;
527 : int *(*hoge)(); ダサッ
528 : >>526 言語明瞭意味不明
529 : fack you
530 : typedef int *hoge; ん〜?
531 : >一貫性言い出したら int* a; なんて a+b / c って書いてるようなもんだぜ? int *a; => a +b /c
532 : >>521 せめてJava使えよ・・・よりによってDはないだろDは
533 : >>531 int ( * a ) だから何の問題も無いと思うけど???
534 : >>526 これだな 一番楽だしこう書いて問題が起きることはまずない
535 : int *const a;
536 : >>520 それを言うなら std::vector<std::vector<int *> > っしょ
537 : >>526 一貫性無さ過ぎてウゼー
538 : ポインタは int *a; 参照は int & r; だなぁ、なんでこうなったのかわからん。
539 : ああ int & r; だとコンパイルエラーだすまんn
540 : >>538 typedef int *int_pointer; って書くの?
541 : >>539 いやメンバ宣言なら通るだる?
542 : int * & r; のときはどうすんねん
543 : 変わらんだろ
544 : そんなもんが必要なら設計から見直せ
545 : てか、それコンパイル通るっけ?
546 : >>545 どれ?
547 : >>546 >>542
548 : とおる http://toro.2ch.net/test/read.cgi/tech/1313183984/403 http://ideone.com/ArKwc
549 : >>545 どうみても通るとしか
550 : >>540 それは誰だって typedef int* int_pointer; にするだろ、評価の優先順位からいって。 見た目の一致だけみて一貫性とかいってる奴はあほ
551 : >>550 評価の優先順位という意味不明な供述をしており
552 : typedef int* int_ptr; int_ptr a1; int* a2; これなら一貫性あっていいな
553 : int *派が「一貫性」という日本語の意味を 理解していないことは理解したOK
554 : >>551-553 の実体は同じ
555 : 区別が必要なときだけ空白を入れる 一貫性あるね
556 : 臭いものにフタをするのは一貫性とは言わない。 hageがその意味でバカだった。 const int hage, *const unko = nullptr, *const *const kuso = nullptr; という宣言に於いて 「const int」がtype-specifier-seq、 「*const unko = nullptr」と 「*const *const kuso = nullptr」が init-declaratorであり、 後者のconstはすぐ左の*に対するオマケ という文法なのだから、 type-specifier-seqの一部とinit-declaratorの一部を くっつけようなどという発想は愚か。
557 : >>553 は >>556 を頑張って理解してから糞して寝ろ OK?
558 : >>556 > type-specifier-seqの一部とinit-declaratorの一部を > くっつけようなどという発想は愚か。 この部分が飛躍してる
559 : ポインタの位置論争始めたのだれだよ 終わるわけねーよ
560 : void hoge(int */*a*/){} これもなんか妙だし
561 : >>558 どのあたりが飛躍なのか説明無しに 相手を誹謗するだけのチンカス乙
562 : >>559 主犯は禿
563 : >>556 「type-specifier-seqの一部とinit-declaratorの一部を くっつけようなどという発想」 が「愚か」だと判断される理由は? 。> > この部分が飛躍してる
564 : >>556 などと意味不明な供述(r
565 : boostもSTLも、みんな"*"を左に寄せてるじゃん! 右寄せしたら駄目だよ!
566 : STLって何ですか?
567 : Class... Args Class ...Args お前らはどっち? でClassのあとの...ってどう呼ぶんだ args... この...は演算子なんだろ?
568 : >>567 おまえ演算子の意味わかってないだろ
569 : >>566 うなだれるリーゼント野郎
570 : >>569 くそ、ちょっと笑ってしまった。 油断してたぜ。
571 : >>559 俺 すまん
572 : templateのおすすめ解説書を教えて下さい 和書の方が嬉しいですが、洋書でも大丈夫です
573 : Modern C++ Design
574 : >>559 少なくとも「論」争レベルには達してない。 仕様確認して、あとはツールに任せればいい事を思い込みで言ってるだけ。
575 : そもそも一行で複数の変数を定義しようってのがC系のアホなとこじゃん そのアホなルールを通すための文法が>>556 なわけで なんでint a, *b; みたいに 型であるポインタが変数側に来るんだポインタは型じゃないのかよボケってとこから 出発したint* b;って書いて型を明確にしようって意味論的発想を理解できない化石脳な カス野郎が未だに存在していることが理解不能だよ
576 : 一行で書きたがる奴は、メンバー変数も int a, *b, *const *c; みたいに書くのか?
577 : 見た目より規格の意味が大事って論調の>>556 みたいな奴は、関数の宣言もint *foo(int *a)とかなんだろうか 変数は複数宣言のために仕方ないってのも分かるが
578 : 宣言や定義をカンマで並べる人は char *func1(), func2(), **func3(); 関数でもこうやって宣言してる?
579 : 根本的にはCの変数宣言の構文が汚いのが悪いな。 それにどう対応するかで意見が分かれる。 俺は意味論的な読みやすさを重視した方がいいな。他の言語と行き来する時に混乱しにくいし。
580 : 「*」が… もし型ならば、できるだけ左側につけて書く。 もし単項演算子なら、できるだけ右側につけて書く。 「*」を含む変数宣言・定義は一行に複数をまとめない。 まとめたいときはtypedefして「*」をなくす。 最近のライブラリはみんなこうだから、合わせておけば将来安心
581 : 終わらねえw
582 : 一行で複数の変数を定義しようってのは 古い言語だからしょうがない
583 : モニタの解像度が糞低くて縦に間延びできなかったんだよな
584 : >>470 コードページ間で変換を行うAPIはC標準じゃなくてWindows API側にある。 ここより適したスレで質問するべき
585 : >>584 fopen_sにUTF8でファイル名指定したいという人に 文字コード変換は他で訊けとはこれ如何に。 しかしfopen_sとかキモイ関数はC++14にも 入るんだよなきっと
586 : >>584 現在のロケール→ワイド文字の変換は mbstowcs,mbsrtowcs mbstowcs,wcsrtombs mbrtowc,wcrtomb snprintf(out,len,"%ls",in),swprintf(out,len,"%s",in) で出来る筈で、この辺はC99で有効なはず。 変換したい文字コードのロケールがあれば、 setlocaleとこれらで全て相互変換出来る筈だが ・・・実際実用に出来るかというと・・・なぁ・・・
587 : >>586 一つ前のレスも読めない文盲はしんでいいよ
588 : >>583 昔とは事情が違うけど、今でも縦が不足気味なのに対して横が余ってね?てか、横ダダ余りすぎというかw 横長すぎだろ?と思って普段は↓みたいに分けてるけど・・・・・・ auto filter = [are, kore, sore](int dore, int dare, int ore){ return long_long_expression; }; auto begin = boost::make_filter_modoki(filter, id_0, id_1); どうせ横ダダ余りなんだから、いっそ開き直って↓って書いてもいいんじゃなかろうか?と悩んでしまう。 auto begin = boost::make_filter_modoki([are, kore, sore](int dore, int dare, int ore){ return long_long_expression; }, id_0, id_1);
589 : 規格より俺のコードの見た目が大事っていう 577みたいなバカが設計すると cout << kuso みたいなウンコ禿ライブラリができあがる
590 : >>587 585-586は欠片も重複して無いんだが、読んでたらどーなるんだ?
591 : @>>470 と関係無いレスが無くなります A現在のロケールで表現できない文字コード間の変換ができるようになります BC++スレでC99という関係無い言語を持ち出すことが減るでしょう CUTF-8というWindowsのsetlocaleでは制限を受ける文字コードが扱いやすくなります D彼女ができます Eswprintfの使い方を間違えなくなります F宝くじで1億円あたるかも?
592 : >>589 リーダブルなコードを書くためには見た目が大切だよ C言語は規格が腐っていることは既に散々言われてることだけど 今更変えることが出来ないから新規コードは書き方で工夫していこうってこと 規格でgotoを自由に使えるからといってスパゲッティなコードは 書くのは良くないという共通認識と同じレベルだよね coutは演算子を自由にオーバーロードできるという規格をフル活用して作った プロモーション的なものだからその反論はブーメランなんじゃないかな これもgotoと同じでデフォルトの演算子の意味とかけ離れた再定義なんて してはいけないことという共通認識が現在は出来てるよね
593 : >>592 そんなこと言うからDSLちゃん拗ねちゃったじゃない!慰めてあげて><
594 : >リーダブルなコードを書くためには見た目が大切 一貫性のない書き方は可読性を下げると主張する人に対して 「俺の書き方の方が可読性が上」の前提でレスするとか、 どうしたらこういうおつむになるんだろ
595 : >>594 > 一貫性のない書き方は可読性を下げると主張する人に対して それはどれだよ
596 : 「見た目が大切」はバカとの主張(>>589 )に対して、 「見た目が大切」というレスポンス(>>592 )。 ここまでは俺にもわかる。 >>594 は一体何を言っているんだ…
597 : >>578 一行でまとめた方がいいときにはね。 一行でまとめてすっきりさせたり、一個ずつコメントを付けておいたり、妙な縛りにとらわれずに変幻自在にやってるよ
598 : 結論:全部typedefだ
599 : >>597 チームで開発したことない奴はコーディングルールに縛られなくて良いよな! あ、チームって言うのは未来の自分(=他人)も含んでの意味だからー Rー開発は自分のコードをメンテしなくていいのも利点だのぉ
600 : >>597 お前は百人に一人すらいない少数派だと思うよ
601 : >>599 コーディングルールによっては、「変数定義/宣言は一行にひとつで」とかあるんですか?アマチュアからみてもちょっと信じられない縛りですね 代表的なコーディングルールにはなにがあるのでしょうか?
602 : >>601 変数定義じゃなくて、関数定義の話だろう
603 : >>594 のレスに可読性はないが、何となく日本語みたいなものが表示されているので、規格は満たされているといえる
604 : >>602 関数定義じゃなくて、関数宣言の話
605 : >>578 > 宣言や定義をカンマで並べる人は > char *func1(), func2(), **func3(); > 関数でもこうやって宣言してる? >>597 ◆QZaw55cn4c > 一行でまとめた方がいいときにはね。 略 >>599 > チームで開発したことない奴はコーディングルールに縛られなくて良いよな! 略 >>601 ◆QZaw55cn4c > コーディングルールによっては、「変数定義/宣言は一行にひとつで」とかあるんですか?アマチュアからみてもちょっと信じられない縛りですね 略 お前、なに途中で話を変えてんだよ デタラメ過ぎだろ
606 : >>601 特に強制されたわけじゃないが、いつのまにか一行一宣言になったな、俺は。 複数の宣言を併記してもタイプ量以外メリットないし。
607 : おや昨日まで一貫性がとか言ってた人 規格をもとに論破されて 可読性に話をすり替えているようですね [[unko]] int const a alignas(100), *[[kuso]]const pb alignas(100) [1][[hage]], *[[kuso]]const pc alignas(100) [1][[hage]]; はどうするんだっけ? 一行に書かないようするん?
608 : 論破って何だよw バカはRよ
609 : test<int (*const)[8]> test<int(*const)[8]> どっちが正しい?
610 : >>601 そうでもないと思うけどね。 俺もいつの間にか一行一変数が習慣になっているなあ。 定義時初期化を心がけてるからだと思うんだけど、一行一変数の方が楽なんだよね。
611 : ISO/IEC 14882:2011自体がコーディングルールが 全く統一されていないUNKOです
612 : コードに芸術性を持たせるためには、 1行1mean が必須かな。 だから、1行1変数が良いと思うよ。 まあ芸術的感覚がない人には理解できんよ
613 : >>599 未来の自分ってなんだよw その未来に自分が生存しているなんて保障はないだろ
614 : 突っ込む所はそこではない
615 : 599がコードを書いた。 1時間後に自分でコードを修正した。 1日後にも修正予定。 ⇒ 3人によるチーム開発と599は自認 もう599が哀れで仕方ない
616 : 599はゴミクズにレスするという致命的なミスを犯した 哀れすぎる 今すぐ死んだ方が良い
617 : /* 未来の自分へ やぁ、久しぶり。君が無事にこのコメントを読んでいるということは、デバッグはうまくいったんだね。 その間いろいろ苦労をかけたと思うけど、仕方がなかったんだ。許して欲しい。 君も知っている通り、このコードは恐ろしいバグに侵されていて現代の技術では直す術がなかった。 だから、未来の新しい技術でこの問題が解決できるときまで僕は眠ることにする。 おやすみ。 */
618 : 元ネタが思い出せない…
619 : /****** 天気が悪いのでまったり ******/
620 : /*/ なんか昼間から酒のみたくなってきた /*/
621 : >>617 パンダの霊にでもとりつかれてんじゃねーか、兄ちゃん
622 : // ToDoリスト // 寝る // parseInt の修正 // trim関数は必要? // 飯 // 2ch (削除予定) //
623 : テンプレなのかなんなのかダメージが一定量を超えると粘着しだす奴いるな
624 : #if 0 // ここをコメントアウトするとなぜかうごく ... #endif
625 : > テンプレなのかなんなのかダメージが一定量を超えると粘着しだす奴いるな >>623 とかな
626 : うんこに触ったえんがちょだからしょうがない
627 : >>605 つまり、一行でまとめる人は脳味噌が腐ってると?
628 : Cで書かれた関数ポインターを引数にとる関数に、関数オブジェクトを渡す方法ってありますか? #include <iostream> typedef int (*FPtr)(int); int add(FPtr f, int x, int y) { return (*f)(x)+(*f)(y); } int func(int x) { return x+1; } struct func2 { const int a; func2(int a): a(a) {} int operator()(int x) const { return a*x; } }; int main() { std::cout << add(func,2,3) << std::endl; func2 f2(4); //std::cout << add(f2,2,3) << std::endl; }
629 : >>628 無い
630 : ある
631 : ないある
632 : ポインターってゆるゆるだから、実行時に何とかなると思ったんですけどw
633 : C++のラムダの仕様嫁 無理 仕組みを考えればできないことは明らか
634 : なるわけねーーだろたわけ
635 : 汚いけどグローバル変数介すしかないんじゃないの FunctionObject gFunc; Result delegate(Arg val){ return gFunc(val); } int main(){ c_function(delegate); }
636 : std::function使えばいいだろ 何でも入るし
637 : libffiでクロージャ作れば可能
638 : >>633 ラムダなら余裕だろ
639 : >>636 これ何かおかしいですか?セグフォになるんですけど・・・ #include <iostream> #include <functional> typedef int (*FPtr)(int); int add(FPtr f, int x, int y) { return (*f)(x)+(*f)(y); } int func3(int a, int x) { return a*x; } int main() { std::function<int(int)> f3 = std::bind(func3,std::placeholders::_1,4); std::cout << add(*f3.target<FPtr>(),2,3) << std::endl; }
640 : >>639 アホかそんなことやったら落ちるに決まってんだろ ttp://ideone.com/FEmUgG
641 : >>640 いや、addはこっちでいじれないライブラリに入っているので、 呼び出し側でなんとかしたいのです。
642 : bindしても元のポインタの引数の数が変わるわけじゃない Cの関数ポインタ相手に変形は無理
643 : そうですか・・・ 引数の型と種類は知っている前提でもなんとかなりませんか? bindほど一般的な操作は求めていないので。
644 : どうしようもないな
645 : 人生から見つめなおせ
646 : >>643 Cの関数ポインタは関数のコードのアドレスそのものであり、付随するデータを受け渡す仕組みはない。よって付随するデータを受け渡す仕組みは関数ポインタを受け取るライブラリー側が別途提供するべきであり、もしそれがないならそれはそのライブラリーの欠陥と言える。
647 : C++相談室なのに普通の質問にくだらない煽り入れる奴はなんなん
648 : そうだね ごめんね
649 : >>646 ありがとうございます。そもそもできないということが理解できなかったのですっきりしました。 >>647 (C++は怖い人がたくさんいるということを知らずに)初心者が見たら恐ろしくて質問どころじゃないですね・・・
650 : 現実的なのは >>635 ぽいですね。
651 : >>650 使いまわすならmutexを忘れずにね
652 : ポインタって見るだけで再燃しやしないかとハラハラする
653 : ボッ
654 : 関数ポインタの*って右に書く?それとも左?
655 : どちらでも良い。
656 : ←
657 : functionalとかbindってC++11から? 関数オブジェクト関係てどこまでが昔のC++かわからん
658 : >>602 >char *func1(), func2(), **func3(); え?これが関数定義? >>604 え?これが関数宣言?
659 : >>606 >>610 そうなんですね.参考にさせてください.
660 : >>617 これ,どこに書くの? デバッグがおわって初めて見えるところって?
661 : >>658 どうみても関数宣言だろ
662 : >>658 >>604 ごめんなさい,まがうことなき関数宣言でしたね.char (**func3)(); とかと区別が付いていませんでした
663 : つまり char *strchr(const char *, int), strstr(const char *, const char *); のような 一行で複数の関数を宣言することを良しとしないなら、 メンバー変数やローカル変数の宣言・定義でも同じルールを適用して 一行ずつ分けておけってんだ。
664 : 訂正 >>663 > char *strchr(const char *, int), strstr(const char *, const char *); char *strchr(const char *, int), *strstr(const char *, const char *); こうだな。 カンマ区切りの複数宣言は最低だな!
665 : >>618 かまいたちの夜?
666 : かまい?それ誰?
667 : 構い ワ行活用ですね。
668 : >>662 >>602 にも謝れや
669 : ごめんなさい
670 : ほんとすまん
671 : いやーわりいわりい
672 : さーせんっした
673 : 左遷した
674 : 北国の〜
675 : JR北海道
676 : ん?また朝鮮人低脳Qが湧いていたのか
677 : >>643 インラインアセンブラ使用可って条件でいいなら無理やり出来なくもない ただしこれはWindows(32bit)でしかテストしてない ttp://ideone.com/DzKAXy
678 : >>677 それくらいしか手は無いわな。 けど汎用性持たせる努力しすぎだろ、なげぇww
679 : インラインasm無しで同じことやってる怪しいコードを見つけた http://fscked.org/projects/minihax/c-functor-c-function-pointer-conversion http://fscked.org/proj/minihax/autocode/functorptr.cc
680 : >>679 ・closure()の長さがMAX_FCN_SIZE(128)を超える ・closure()の中で別の関数と共有された相対jmpがある ・closure()の中でスタック検査などで相対アクセスが挿入される ・thisptr=(Functor *)MAX_INTの即値が分割・変形される(MIPSとかでよくあるアレや、0xFFの符号拡張等) ・mallocで確保したメモリ領域の実行可能フラグが無く、それを検査される などの問題が無ければOK。
681 : >>680 最後以外>>677 と条件変わらなくね 同一環境のコードだから分割とかが問題になりそうもないし
682 : >>681 >>677 だとdeclspec(naked)やomit-frame-pointerがあるからかなり確実性が上がってるように見える ・プロローグコード無しならコードサイズはまず膨れない ・関数本体がjmp先って事でも無い限り、全部インラインアセンブリなのでコードの共有は無い ・スタック検査は無効化してあるので挿入されない ・コードを含む構造体の相対アクセスなのでコード自体を変更しないから問題ない ・PAGE_EXECUTE_READWRITEしてるので問題ない 分割ってのはMIPSだかの固定長命令セットで上位movと下位movに分割される奴だけど、 そういうCPUをサポートするんでも無ければ問題ない・・・けど符号拡張はx86でも起きるぞ。 MOV EAX,0xFFFFFFFFがOR EAX,-1に変形されるのなんて良くある事。 関数本体がjmp先にあるってケースくらいじゃないかな、677で怖いのは。 俺は、DWORD __declspec(naked) Func(DWORD){__asm{ cmp [esp+4],0 jnz J1 mov eax,offset L0 ret J1: mov eax,offset LE0 sub eax,offset L0 ret L0: コード本体 LE0:}}ってやって長さと位置もインラインアセンブリ中で求めてた。
683 : >>682 処理系が同じなら同じ値なんだから別に起きても大丈夫でしょ。
684 : 関連 VCのx64クロスコンパイラは、インライン汗受け付けないとかじゃなかったっけ どういうことかというと、めんどくさいぞこらMS手抜きしないで仕事しろ 一応フォローすると、ml64が添付になってるのでそれ使えぽい gccいけるとこは、自由にゴリゴリ書いてもらうとして、Win32/64の場合、 ATLにの、this埋め込み付きスタブ関数生成関数があった希ガス
685 : x64インラインアセンブラが廃止された理由 http://www.officedaytime.com/tips/asm64/caution.html これじゃメリットがないわな
686 : めんどくせえ
687 : > スタックポインタが動くような操作をしていいのは関数の最初と最後の部分だけ。その部分は「prolog」「epilog」と呼ばれ、やっていいことが決まっている。 うそくせえ allocaどうすんだよ。
688 : スタックポインタは触るなって? とても信じがたいねえ gcc とかでもだめなの?なんでだめになったの?
689 : 組み込みで64bitとかないし コンパイラ開発してるんでもなきゃ いまどきインラインアセンブラなんか書かんだろ 誰が使ってるんだ
690 : epilogとprologを生成してくれるから(non naked)ありがたいんじゃないか、 結局なんで不親切になってんだよw amd64のいい逆汗ないかねえ、無料で 有償品でよければIDAが有名だが
691 : 組み込みで64bits使ってるんですよ…
692 : >>683 いやあの起きたらif(*(Functor**)end_ptr == (Functor*)MAX_INT)が成立しないんだが。 >>687-688 そもそもコレだけ解説しといてそれがなんと呼ばれる呼び出し規約かすら説明して無い。 Tipsや慣例(ミス削減のための規則含む)に基づく話がごっちゃになってるんじゃない?
693 : 俺はないけど、 仕事でwinの64bitでインラインアセンブラ/アセンブラを使ったプログラムを作成したことある? あるなら、どんなのをアセンブラ書いた?
694 : USBプロテクトとかじゃないの?代表的な物は
695 : struct stat Stat; stat(name,&Stat); 誰だよこんなうんこ考えたやつ
696 : なにそれ
697 : struct a A; // struct a{}; a(b,&A); // void a(int,struct a*){} てことかな?
698 : 名前と同じ構造体の関数用意して使わせるとか 気が狂ってるとしか思えない
699 : 狂ってるけど何か文句ある?
700 : >>695 標準関数が標準の構造体と同じ名前って なかなか無いよな それ設計した奴は誰?
701 : まだ勉強中でなんですが、例外処理について皆さんの意見をお聞かせください エラー処理をする際に、その都度エラーメッセージボックスを表示させて returnさせているのですが、 throwしてcatch{}にまとめた方がいいような気がしています しかし、文字列を直接throwするのはなんだかおかしいんじゃないかと思っています、 例) try { // 例外が起きそうな処理 throw "エラーだよ" } catch (CString msg) { AfxMessageBox(msg); } エラーメッセージは自分で決めたい場合もあると思うのですが、 どのようなエラー処理がベターなのか 色々サイトを見てみましたがつかめずにいます。 Cexxeptionを継承した自作クラスを作るべきなんでしょうか? 皆さんはどんなエラー処理をしてますか?
702 : >Cexxeptionを継承した自作クラスを作るべきなんでしょうか? 無論。面倒ならCExceptionそのまま
703 : >>701 throw の引数はクラスにしておく スーパークラスとしての exception クラスをつくっておき、個々のエラーは exception を個々に派生させる
704 : >>701 例外クラス間のツリー構造を設計するのが システム全体を設計する中での最も重要な仕事なのだよ
705 : MFCだとCExceptionっての使う方がいいんだろうか
706 : CExceptionは規格策定前のRTTIのオーバーヘッドが問題視されていた時代に 独自のRTTI相当機能を実装するための親クラスだったような。 まあMFC使うなら作法には従っておいた方がいい。 deleteの仕方が独特でキモイけど。
707 : > deleteのほうがキモい 同感
708 : delete必要だっけ?
709 : 正直 CException 例外の正しい投げ方がよく分からない new して投げるの?
710 : yes
711 : なら CFile::Open で例外投げたい時は new して渡して、 失敗してたら THROW、成功してたら delete なのか 面倒だな・・・ END_CATCH に delete がなかったと記憶してるけど delete はどうするの?
712 : catch (CException* e) { e->Delete(); } ってやるらしい
713 : >>712 うへえ じゃあこれやってないとリークすんの?
714 : 例外処理でヘマするとリークするなんて仕様は愚の骨頂だな
715 : C++では掴まざるを得ないような例外を投げないでくださいお願いします
716 : CATCH 内で RAII してるわけじゃなくて?
717 : struct hoge { hoge( int ){} }; hoge h( int() ); // warning C4930: 'hoge h(int (__cdecl *)(void))': プロトタイプされている関数が呼び出されませんでした (変数の定義が意図されていますか?) なぜ警告でますか? 警告でないようにするにはどうすればいいですか
718 : >>717 int()の中に引数がないのはなんで?
719 : >>717 hoge を返す h という関数を宣言したいということでよろしいか?
720 : hoge h(0); だと平気なのはなんでですか
721 : >>717-720 迷惑だから他でやれ
722 : >>717 の頭が悪すぎてワラタw プログラム以前に知能が低いw
723 : >>720 hogeを覚えたり調べたりする暇はあってもC++の入門書を読む暇はないんだね〜へぇ〜すごく頭良さそう 毎日2〜3時間ゲームやってるくせに 毎日「忙しい忙しい」と言ってる奴が昔会社にいた うだつのあがらない馬鹿だったけどね
724 : typedef int(*returns_int)(); hoge h(returns_int); にすればいいんじゃない
725 : >typedef int(*returns_int)(); >hoge h(returns_int); 底辺ドカタだとこんなコード書いても平気なんだなw typedefwwww
726 : 初心者に変な癖つけさせるのが狙いなんだろ
727 : 新卒やニートを雇うと>>724 みたいな糞コードを平気で書いてくるマジキチがたまにいるけど。 こういうのを鵜呑みにしてるんだろうな。 生きてる価値がない。
728 : 価値がないだけならまだしも迷惑
729 : 724:デフォルトの名無しさん :2013/10/24(木) 16:05:58.20 [sage] typedef int(*returns_int)(); hoge h(returns_int); にすればいいんじゃない
730 : >>717 int() ↑これは何がし.たいの?
731 : hoge頑張れ!
732 : >>730 荒らしにレスするな お前も荒らしになるぞ
733 : >>732 お前だけが荒らしなので大丈夫(^^)
734 : int tv{}; // ←primitiveにデフォ値があるんか? と hoge h{tv}; //で、なんじゃねーの
735 : intにもデフォ値があるの知らないの?
736 : >>733 よう荒らし 自己紹介乙
737 : 今からこのスレでは typedef hoge int; が標準となります。素のintは使用禁止です。
738 : >>737 つまんねーhageだな shineばいいのに
739 : 誰がハゲやねん!
740 : ハゲじゃないよ、ヘイジだよ
741 : HANDLE hAge;
742 : アホーとは俺のことかとエイホ(Aho)言い
743 : >>737 わざわざコードを一行増やす理由、 及び わざわざ文字数の多い文字列に置き換える理由、 が不明瞭 hoge厨は精神異常
744 : >>737 intは iHogeにしろ
745 : >>730 何もしたくない。int型なのは単なる例 コードの意味を聞いてるんじゃなくて現象を聞いてるの
746 : たとえば vector<CString> hoge()[
747 : >>717 hoge h((int()));
748 : >>745 コンパイラには>>719 として解釈されるが >>720 の可能性があるので警告してるんでしょ >>720 にしたいならそうすればいいし >>719 なら>>724 にすれば警告はなくなる
749 : Effective STLに気持ち悪い例が載っているな ifstream file("test.dat"); list<int> data(istream_iterator<int>(file), istream_iterator<int>()); 綺麗な顔してるプログラムだろ? これ変な動きするんだぜ?
750 : > istream_iterator<int>() どうしてこんなKUSO仕様がISOで承認されたのか理解に苦しむ
751 : 他にどうすればよかったと思う?
752 : >>750 C++には糞仕様大好きhoge使いが多いからよ
753 : >>750 istream_iterator<int>::end()
754 : std::for_eachを使う理由って何ですか? 普通にforで回しちゃなぜいけないのですか? 一々関数オブジェクトなんか作成しなきゃいけないのに・・・ notなんてifの中の条件を!すればいいだけでしょ?
755 : >>754 1行で簡潔に書くため ラムダがサポートされているんだから関数オブジェクトもすっきり書ける
756 : 決まりきった単純なファンクタならそうできる。 いろいろ使いまわせるファンクタなら独立して書く価値がある。
757 : せっかくイテレータがあるのに常にforでまわしてるってのは C++以外は割とイレギュラーだもんな
758 : 757が何を言っているのかわからない
759 : しかしstd名前空間が込み合いすぎだ 安心してusing namespace std;できる程度にとどめてほしかった…
760 : for_each(c.begin(), c.end(), [](string &s){cout << s << endl;}); for ( auto &s : c ) cout << s << endl: こんな感じだっけ?
761 : package文とimport文があれば、気兼ねなく名前空間作れるのに。 C++だと実装むずかしいのかな。
762 : forなのにセミコロンがないなんてっ! ++11のforはなんか気持ち悪い いまさらforeachを予約語にするのも・・・てことか
763 : >>759 using namespace std;はやってもせいぜい関数内に留めて 基本常にstd::付けた方がいいよ
764 : >>762 Javaの真似しただけだろ
765 : Range for は使ってみると速度が遅いな Javaと同じ書式を採用したようだけど内部の展開が悪いみたい ちなみにgcc
766 : >>765 はRange-based forを一体何だと思ってるんだろうか
767 : 今どきだと配列使わないでlistとかvectoreとか使うの?
768 : その遅いというコードを晒したらよってたかってダメなところ指摘してくれると思うよ
769 : >>767 ケースバイケース
770 : >>769 配列のほうが勝ってるケースってある? アクセスとか挿入とかのコストとかの観点以外で
771 : >>770 アクセスとかのコストで配列のほうが勝ってるケースがあるって自分で分ってるじゃないか。
772 : 測ってみると生配列のポインタよりイテレータの方が大抵早くなるわ
773 : >>770 速度が重要なケースでは例えば自動変数の配列で良い所でvectorを使ったりしないなあ 今どき他の言語じゃなくC++を使う理由は「速度」にあると思ってるよ
774 : >>772 そんな馬鹿な
775 : forの内側でvectorやstringを宣言する気にはなれませぬ
776 : >>774 測れよ
777 : なんでイテレータの方が速くなるの?
778 : さあ?コンパイラに聞いてくれ
779 : >>771 >>773 いや速度やメモリ使用量以外でもなんかメリットあるのかなぁと思って 今はそんな速度にこだわってないから,なんでもかんでもlistを使ってるんだけど 他の人はどうなのか気になってた できればC++は難しいから使いたくないんだけど,業務だからしょうがないんだよなー
780 : >>776 どんなコードで比較したのかを書けよ 特にお前の言う「生配列のポインタ」ってのがどんなのか イテレータが生ポより早いなんてありえないからw
781 : たまたまエイリアスの可能性が排除できて最適化されたのを イテレータのおかげと勘違いしたとかじゃない?
782 : restrict
783 : 生配列ってのが何らかのAPIで確保したメモリ領域の事で、 そのAPIのコストが高かったとかいう可能性もあるな。
784 : それかキャッシュの影響を考慮しないで測定値を鵜呑みにしてるとかだろ イテレータなんて良くて生ポそのものなのであって。。。
785 : >>776 ほらよ http://ideone.com/S7i2Qa
786 : > memset(a, 0, sizeof a); これは笑いどころか? とりあえず配列のほうは0クリアされてない(=キャッシュにのってない)ので 比較できる条件ではない
787 : わろたwwwww
788 : > auto e = &a[SIZE]; これは auto e = &a[SIZE - 1]; こうだな おれの環境では最適化したら似たり寄ったりだった
789 : >>788 それは&a[SIZE]でいい しかしイテレータを<で比較する人はまだ絶滅してなかったか
790 : >>785 10年前のC++コードみたいだw
791 : >>786 あっ本当だ。いろいろいじってるうちに間違えちゃった。 修正版 http://ideone.com/VQdY0v
792 : >>790 まあそう言いなさんな あくまでも生ポとイテレータの速度比較が目的なんだから
793 : >>790 今どきのってどんな感じなの? いや,煽りとかじゃなく
794 : 僕も昔の文献で学んだので気になります
795 : >>793 memsetとか、後置インクリメントとかあったからさ。 ちょっと思った事をそのまま書き込んでしまったんだ。すまん。
796 : 俺が前回読んだときは生配列とvectorの速度比較の話だったはずなのに 今見たらポインタとイテレータの速度比較の話にすりかわってら
797 : すり替わってるってほどすり替わてるかそれ?
798 : 今どきのCって++aが基本なの?
799 : >>791 そのコードでvectorと配列に有意っぽい差がついてるのが興味深いな コンパイル環境教えてほしい。逆アセしてみたい
800 : 生配列とvectorのどちらが早いかという話だから 一方にイテレータ使うと比較対象が曖昧だわな 生配列と生ポ vectorと生ポ これらで比較すりゃいい
801 : >>795 いや,純粋に気になっただけなんだ さんくす
802 : >>798 後置インクリメントはコピー生成と同じ。
803 : >>802 それって型依存だよね?
804 : とりあえずideoneじゃ最適化オプションが問題だな
805 : >>803 プリミティブ型じゃどっちでも って感じだね
806 : ++itの方が早い・・・はずだが、ideoneだと差出ないな 俺の環境だと差出たけど っつうか、同じコードなのにvectorが配列より4倍くらい遅い
807 : >>803 型関係なくコピーはされる。 じゃないと部分式が評価される時点で変更が加えられちゃう。 /ideone.com/WaZZ5x コストの大小で言えば、もちろん型によるだろうけど。
808 : >>807 値型はCと同じ実装じゃないのけ
809 : >>806 コンパイルオプションにちゃんと-O2付けてる?
810 : >>808 すまん、プリミティブ型の話か。 実際に比べた事はないが、まず変わらないだろうな。
811 : >>807 うそこけ型は関係あるだろ プリミティブ型のi(int)を++i;した場合もi++;した場合も最適化されて↓になったぞ movl %ebx, 4(%esp) addl $1, %ebx
812 : >>809 O0だった O2つけたら確かにほとんど変わらない
813 : >>811 すまない誤解を与える文章だった。 変わらないというのは速度の話だ。
814 : ideoneはgcc 4.8.1 最適化はたぶんデフォルトの-O2だな
815 : >>807 > 型関係なくコピーはされる。 変更前の値を使ってないなら、コピーを省略することぐらいは普通にやるでしょ。
816 : コンパイラはそうしてくれるかも知れんが、実装としてはコピーでしょ
817 : >>815 それはちょっと違くないか? コンストラクタ通る時点で最適化止まるだろ。
818 : >>816 ごめん、マジで意味わからん >>817 コンストラクタ? ごめん、こっちも意味わからん...
819 : >>818 コピーコンストラクタで発生する副作用は最適化で消えないって意味だろ。 コピーコンストラクタで発生する副作用が全て最適化で消滅する場合は最適化の結果コピーも消えるだろうけど。
820 : >>818 最適化って関数呼び出しとか、一定の条件で止まっちゃうのよ。 もしかしてインラインなクラス前提で話してる?
821 : >>819 消えるのか、消えないのかはっきりしろよ...
822 : >>820 そもそもプリミティブの話だよ...
823 : >>815 これが一番意味分からん
824 : >>822 プリミティブ型ならそもそもコピー自体しない 省略って何だって、やっぱ意味不明
825 : もうごちゃごちゃするからレス書く前にプリミティブかクラスか両方か書こうず
826 : int countBit(int x) { x = x - (( x >> 1 ) & 0x55555555); x = (x & 0x33333333) + (( x >> 2) & 0x33333333); x = ( x + ( x >> 4 )) & 0x0F0F0F0F; x = x + ( x >> 8 ); x = x + ( x >> 16 ); return x & 0x0000003F; } ネットで高速ビットカウントのソースを見つけました。64bitで使うために型と 0x3333333333333333 0x5555555555555555 0x0F0F0F0F0F0F0F0F に変更したのですが32bitまでしか数えてくれません。 あとどこが修正必要でしょうか。
827 : ULつけるとか
828 : >>826 32bitシフトして足すのが足りないんじゃねえの?
829 : >>824 > プリミティブ型ならそもそもコピー自体しない 大丈夫か?
830 : >>826 827 828に加えて returnのところの3fを7fにしないと何やっても31までしか返らんよ?
831 : >>830 わろた
832 : >>826 > x = x - (( x >> 1 ) & 0x55555555); この、元の式がおかしい
833 : >>830 どうして?
834 : >>829 >>811
835 : >>822 途中で意見を変えたクズ
836 : >>834 おいおい、最適化の話との区別もできなくなってるのかよ... >>835 途中で? この話は >>795 が起点だと思うが、どこで変わったと思ったんだ?
837 : 途中からしか話を追ってないやつかアスペかのどっちかだからキニスンナ
838 : >>836 >おいおい、最適化の話との区別もできなくなってるのかよ... C言語からやり直せ
839 : >>838 > C言語からやり直せ ますます、イミフ (w
840 : >>839 発想は察してやれ。 こういう考えの老害はよくいるだろ?
841 : >>840 ウザい消えろ
842 : 839本人なのか便乗して安全なところから人を侮辱して相対的に自分が偉くなったような感覚に浸りたいのか どちらにしても>>840 みたいなクズは2ちゃんにはよくいる
843 : 確かにそういう奴は2chによくいるね、ほらここにも→>>842
844 : プリミティブ型の++までクラスと同じだと信じて疑わないプログラマがいることの衝撃 オブジェクト指向だけやってきた弊害だろうか
845 : そもそもオーバーライドした前置インクリメントが実際に前置インクリメントであることはドキュメントかソース見ないとわからない
846 : >>844 javaでも違うわボケ
847 : for文やwhile文などでくりかえし処理をすると,繰り返しの回数が99回目までは問題ないのですが 必ず100回目で「sqrt domain error」が必ず出ます。 数値を色々変えてみても必ず起きます. sqrt domain errorはルートの中身が負のときでるエラーだと思うのですが それ以外に出る原因はありますか?
848 : >>847 ソース晒して
849 : >>844 そんな事言ってる奴はいない
850 : プリミティブ型の後置インクリメントでコピー発生とか言ってる人いるじゃんか
851 : >>847 お前のプログラムが間違えている。これ以外の原因はない
852 : >>847 つ http://codepad.org/, http://ideone.com/
853 : >>851 コンパイラが翻訳時に間違えている可能性もあんじゃん
854 : いつもすぐにコンパイラを疑うアホプログラマがいたが、 そいつのバグで実際にコンパイラがバグってたことは一度もない。
855 : だからなんだよアホ
856 : sqrtを呼ぶ前にassertで値をチェックしてデバッグビルドで実行してみたら? assert(value >= 0); sqrt(value);
857 : >>847 入力値が非数または数値として不正なビットパターンの場合
858 : >>854 たしかに、結構長い間マやってるけど、コンパイラのバグにぶち当たったのは X68K の gcc だけだな。
859 : お前らc++の知識どこで手に入れてんの?
860 : 何に限らずこういう奴いるよな 「あいつは何か良い知識の仕入先を持ってるに違いない」と思う奴 今までに10回位はそういう事聞かれたわ
861 : 俺知識の仕入先よく聞かれるわ― 10回くらいそういうこと聞かれたわ―
862 : >>859 hoge サイト
863 : そんなだからお前は何も出来ないんだよ
864 : そういうときは、2chって答えることにしている
865 : >>832 そういやそうだな・・・5=0b0101、3=0b0011・・・ってコレはコレでOKじゃん。引っかかるとこだった。 2bitだけ見るとちゃんとカウント出来てる。 00なら00-00=00、01なら01-00=01 10なら10-01=01、11なら11-01=10
866 : でもC++の知識って他の言語と比べて手に入れにくいだろ
867 : C++は文法、ライブラリ、コンパイラ、ターゲット環境、目的などが多岐に渡ってるから ググるにしても調べたいことが明確じゃないと混乱するってのはあるかもね まあ20年近くC++やってても正直全容がわからんし、自分のペースで学べばいいんじゃない
868 : 何とかC++って外人の書いた本読んでくと何となく分かったような気になるよ
869 : EffectiveC++のこと?
870 : 読んでない人いるの?
871 : むしろこのスレの住人は ProgrammingLanguageC++とか読んでるんだろうか
872 : Exceptional C++とか
873 : EffectiveC++も読んでいるか怪しい i++でもめるぐらいだし
874 : effective c++は変な癖つくから読むなって教授に言われた
875 : C++の本って高いからhogeサイトしか読んでない
876 : >>874 教授にいわれても
877 : 投資限度額がそんなに少ないと何も成果物ができないだろ
878 : exceptionalは真面目に読め effectiveは漫談として読め、もしくは読むな
879 : >>871 あまりに誤植、誤訳が多い糞本だったので、 ブックオフに売りにいったら0円って言われたから、重いのでそのまま引き取ってもらった。
880 : 原著で読まないと
881 : 教授は引きこもってコード書いてるだけだから変なコードだよ で教授が読めないまともなコードは全部変な癖って片付ける
882 : Effective C++ってみんな読んでるっぽいから、変な癖だろうがそれが主流になっちゃしょうがないね どこが変かはよく分からんが
883 : どっかのスレのまね 教育的 != 実用的 必ずしもそうとは限らない
884 : >>882 主流なわけねーよ。 -Weffc++ を日常的に使ってる奴は少数派だ。 常に付けるべしなんて言う奴はそこからさらに少数派だ。
885 : effective c++は 頻繁に例外安全ではないコードがサンプルに出てきて そしてこれで正しいんだとのドヤ顔 プロジェクトにそんな馬鹿が居たら速攻で首になるレベル
886 : 結局どれを読めばいいの?
887 : そのサンプルが例外安全性にフォーカスしてないだけなんじゃないの?
888 :2013/10/28 effective c++のクソなところ。 データメンバーをpublicにするなという話。 std::pairのような設計は完全にNGだと主張されている。まるで子供。ほんと馬鹿。 徹底したカプセル化主義者かと思いきや、データメンバーを外から丸見えにするアクセサーをひたすら肯定してる。 まず内部のデータ構造ありきで、インターフェイスは後から内部に依存するように設計されてるじゃないか。馬鹿かこの馬鹿。 この馬鹿に洗脳されたら生涯駄目人間だからな。気を付けろ。
TOP カテ一覧 スレ一覧 2ch元 削除依頼 ▲
C/C++の宿題片付けます 166代目 (138)
C#, C♯, C#相談室 Part81 (271)
【C++】マイナーGUIツールキット (686)
静的型付け言語の潜在開発生産性は今の100倍 ×3 (561)
Excel VBA 質問スレ Part32 (377)
C言語なら俺に聞け(入門編)Part 121 (201)
--log9.info------------------
誕生日のパラドクス【Part10】 (595)
ノーベル賞取りそうな日本の経済学者っているん? (288)
復刊してほしい数学の本 (394)
関数解析(Functional Analysis) (212)
おまえらIQいくつ? Part2 (609)
☆四色問題の簡単な証明その3☆ (683)
数学の洋書vol.2 (156)
アジアはなぜ四則演算さえなかったのか?・・2 (955)
マルクス主義的数学 (234)
あったら嫌な部類の数学の本 (147)
ゲームの評価 運と実力 (123)
お勧めの未解決問題教えろ (126)
なぜ数学は若くないと偉業をなせないのか (127)
文系のための数学スレッド (143)
ゴールドバッハ予想について語ろうぜ (148)
【新定理】0×∞=1【零除算】 (112)
--log55.com------------------
【徹底】 龍神信仰 【北の教祖桃】
☆日蓮宗大荒行其の再々★
日本仏教は肉食妻帯禁止だけは守れ!
神道の謎
【西日本】縁結び神社寺院【関西】 パート]V
【マンション建設で】越木岩神社【磐座破壊の危機】2
【五百佛山】 真言宗智山派 【智積院】
仏法論議講説スレッド