シンボル名等にhogeを使用することを 不快と感じる人がいます 無用な争いを避けるため、hogeの使用はなるべく控えて下さい
別に当たり前のことだと思うけど。 禁止しないって挑発して 荒らされ続けてる方が負けだろ。
特定のつづりをどうして禁止にする必要があるの? コンピュータやコンパイラが誤動作でもするの?
>>5 日本語読めないの?ばかなの?
「不快と感じる人がいます」
「不快と感じる人がいます」
「不快と感じる人がいます」
「不快と感じる人がいます」
世の中オマエが基準じゃねーんだよバカ
見なければいいのに
8 :
デフォルトの名無しさん :2013/09/29(日) 18:28:40.16
hogeと書くだけで誰かを不快に感じさせられるとかめっちゃ楽しいじゃん hogeって書くだけでいいんだぜ hogeって
「傷つくのでやめて下さい」 弱者の立場を利用してどんな意見でも通そうとする “繊細チンピラ” が増加
ヘイトスピーチ()されていると主張するあいつらと同じ立場の人間だろう
hogeしばき隊の皆さん、ご苦労さまです
その考えだとhogeコピペは荒らしではないな
hogeコピペはhoge特会の朝鮮ヤクザ
STLつかうと一気に実行ファイルサイズが10倍に?! 環境によるだろ。 俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力 ランタイムを使用するようにして使っているが、例えばstd::vectorを 使っても使わない時と比べ10Kほどしか増えない すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。 C1010: プリコンパイル済みヘッダーの検索中に予期しない EOF を検出しました。 とかいうエラーが出るんだけどこれってどうすればいいの? #include <stdafx.h> 後死ね。 言葉が悪いな。それで教えているつもりか。 まぁヒントぐらいにはなったな。 うむごくろう。
>>4 スルーすれば良いだけだろが。
hoge使ったコード後に荒らしレスが付いてもそれスルーすれば問題ない。
hoge禁止にしたところで荒らしが正気に戻るわけじゃ無いし、荒らしは荒らしだ。
>>5 禁止することで荒らしが優越感に浸れる。
禁止しろ禁止する必要はないの議論を眺めて荒らしが優越感に浸れる。
そして次の優越感を求めて同じことを繰り返す。
禁止も推奨もせず、荒らしはひたすらスルーすればそれだけで良い。
17 :
デフォルトの名無しさん :2013/09/29(日) 21:00:16.84
hogeは日本の美しい伝統なのに止めれって朝鮮系スレだな
hogeはヘイトスピーチと同じで朝鮮系が発狂するから禁止 奴らに基地っぷりはすごすぎるからね ついでに2chは朝鮮系人のためのたまり場で朝鮮ルールが適用される
Cは朝鮮のC
Kじゃないのか
22 :
デフォルトの名無しさん :2013/09/29(日) 23:21:31.15
これは恥ずかしいw いくら何でもwww
hogeは捕鯨を推奨してると受け取られても仕方がないのでやめましょう 日本人は、やっぱり野蛮ですね
std::vector<int> ここからintを取り出すことって出来るかね
取り出すって何だ どういう動作になってほしいわけ?
std::vector<> つ int 取り出しました
std::vector<int>::value_type って意味か?
そんなのあったのか ただ使い所がわかんねえ
vector<int>をテンプレートの型引数に取って、その要素を返そうと思って ↓みたいに template <typename T> typename T::value_type Foo(T v) {
tab押してenter押したんですね、わかります まあ使い所はわかった
33 :
デフォルトの名無しさん :2013/09/30(月) 01:05:59.03
>>23 捕鯨は悪いことという前提を、我々は承認していません。
ストレートに2点お尋ねします。
・なぜ鯨を殺してはいけないのですか?
・なぜ人を殺してはいけないのですか?
殺してはいけないから、殺してはいけない、というような循環論法は相手をしません。
客観的な、つまりは敵対的な論客を論破できる、簡潔明瞭な説明を求めます。
2点目に、水も漏らさぬ完全な論理がないことは、つまり
より制限の厳しい1点目に答えられるわけがないと見なします。
イスラム教 「自分が人から危害を受けたくなければ、誰にも危害を加えないことである。」(ムハンマドの遺言) ユダヤ教 「あなたにとって好ましくないことをあなたの隣人に対してするな。」 (ダビデの末裔を称したファリサイ派のラビ、ヒルレルの言葉)、 「自分が嫌なことは、ほかのだれにもしてはならない」(『トビト記』4章15節) ヒンドゥー教 「人が他人からしてもらいたくないと思ういかなることも他人にしてはいけない」(『マハーバーラタ』5:15:17) イエス・キリスト 「人にしてもらいたいと思うことは何でも、あなたがたも人にしなさい」(『マタイによる福音書』7章12節) 「他人にしてもらいたいと思うような行為をせよ」という内容の倫理学的言明 黄金律(おうごんりつ、英: Golden Rule) Wikipedia
35 :
デフォルトの名無しさん :2013/09/30(月) 01:29:25.10
>>33 横レスですが、新日本クジラ研究会です。
クジラを殺すことが悪いのではなく、クジラが減る環境は人類の生存確率が
減る環境だからです。
つまり、人類を存続させるためにクジラを保護しようとしています。
クジラはある意味目安にすぎません。
大型であり、環境にナイーブであり、人類と同じ哺乳類です。
そもそも、環境保護は人類のエゴに基づく行動です。
もしも神様と通信できたなら、今すぐ環境保護をやめろと言われるでしょう。
いずれ人類が滅び、新しい種が覇権を握るのが自然の摂理だからです。
あなたは鯨を滅ぼしますか?
こいつ、seikyou だろ?
37 :
デフォルトの名無しさん :2013/09/30(月) 01:32:49.42
いいえ、新日本クジラ研究会です。 たった今できました。 会員は僕一人です。
>>35 滅ぼすのはダメだろう。でも必要に応じて殺傷し食べるのは問題ないだろう
死刑のように、必要に応じて人間を殺しても問題ないのと同じでクジラも必要に応じて殺傷してよいはずだ
実は俺も人間というのを食べてたくてね
>>39 殺さずに肉だけ食べるなら問題ないはず
自分で肉を切り取ってもらえば傷害罪にも該当しないだろう
41 :
デフォルトの名無しさん :2013/09/30(月) 01:57:11.61
>>35 「減る」とはどのくらいですか?
たとえばミンククジラは、総量に対してどのくらいがバランスよい負荷でしょうか?
研究職の方でしたらおわかりでしょうが、生物の「誕生」と「死」のバランスを崩すと
結果が絶滅あるいは異常発生、食物連鎖間に波及ということが起きます。
人類への影響もこの「波及」に含まれます。
ミンククジラの、全量はどのくらいで、年あたりどのくらい誕生し死すのが理想ですか?
全量は現状どのくらいで、年あたりどのくらい誕生し死んでいますか?
理想と現実の差はどうなっていますか?
追試可能の定量的な数値でお答え下さい。普通の人には聞けませんが、あなたは研究者。
死すべき量を人為的に本来より増やし、その差分をいただくのが養殖です。
いけすを使うか、海洋そのものを使うか、発育段階で切り替えるか、それは様々です。
この点で、養豚場の屠畜と、捕鯨は、何が違いますか?
あなたは人類を餓死させますか?
42 :
デフォルトの名無しさん :2013/09/30(月) 02:08:27.62
>>41 申し訳ありません。
研究会は5分前に解散いたしました。
僕は今ではただの人なのです。
ただの人としてで良ければ会話に参加させていただきたいと思います。
僕は以前からずっと不思議だったのです。
西洋の人たちは自然に生きる生物を殺して食べることを野蛮でかわいそうといいます。
しかし、飼育した生物を殺して食べるのは当然と考えます。
日本人である僕には納得がいきませんでした。
食べられるために生まれてくるほうがずっと残酷です。
ところが、日本でいう建前と本音に基づき考えるとどうでしょう。
可愛そうというのが建前で、本音は利己主義です。
つまりすべてが自己の利益のための行動だったら。
家畜は殺しても生態系への影響がない。
つまり食べていいのです。
飼育して食べるのは人類の存続可能性という点でエコロジーなのです。
おまえらhogeネタで盛り上がりすぎ。ワロタ
44 :
デフォルトの名無しさん :2013/09/30(月) 02:49:33.54
>>42 解散されたのですか、それは大変でしたね。
で、解散された事実はどこかに公示または報道されていますか?
いい加減なこと言われたら困りますよ! (これが失礼なら反駁して下さい)
北米大陸で太古から自然に生きてきたネイティブを食べもせずに(そう信じていますが)
殺すのは可哀想ではないんですかね、あの人たちには。
アフリカ大陸で太古から自然に生きてきたネグロイドを食べもせずに
殴打・致死させるのは可哀想ではないんですかね、あの人たちは。
日本列島で太古から自然に生きてきた黄色い猿の非戦闘員を
焼夷弾と原子爆弾で焼き殺すのは可哀想ではないんですかね。
ベトナムで枯れ葉剤を使って見るも無惨な子供が大勢理不尽になくなりました。
これらすべてがキリスト教の神が命じたことなら、
イエスは悪魔でキリスト教はカルト教団です。
アメリカは我が国以上に大量の鯨を殺害し、不要部分を捨てていました。
我が国の捕鯨産業は「捨てるところがない」ことを誇っていました。
ビキニ環礁の水爆でどのくらいの鯨が死んだのかご存知ですか?
■ 可 哀 想 で は な か っ た ん で す か ! ? ■
もう一度聞きます。
鯨は可哀想なのか減るのか、もはや論点が二転三転しています。
あなたがたは結局、牛肉を売りつけたいだけじゃないんですか?
動物質だけではありません。モンサントの脅威も我々は警戒しています。
「元」研究者さん、あなたが失職した本当の理由は何でしょうかね? これは皮肉です
45 :
デフォルトの名無しさん :2013/09/30(月) 03:16:46.86
>>44 可愛そうなのか減るのか、そして宗教との関連。
実はこのことについても考えたことがあるのです。
ところでもう寝るので、続きは明日帰ってきてから書きたいと思います。
46 :
デフォルトの名無しさん :2013/09/30(月) 03:58:05.87
>>45 おまえが飼ってる犬でも猫でもインコでも、食ってからのコメントが聞きたい
本当にそれが当然で、野生動物を殺すことよりも理性的なのか
イエスさんが、そうしろと命じたのかどうか?
アインシュタインは言った「月は私が見ているときにしか、そこにないのかね」と
あなたたちはイエスがそう命じるから、1秒まえまでの家族の血肉をすするのか
ジョークでしたじゃ済まんぞ
おのれら原爆を悔いるどころか誇っとんのやろ
で、イランや北朝鮮が同じことをするのはいかんのやったなあ
高出力型の弾頭が散布界の小ささによって役割を失うのは周知の事実や
「元」研究者とはいえ、勤続年数まで5秒とは言わんだろう
まともな答えをせにゃ、ここには「フルボッコされたカス」と記録されるだけやぞ
身元も割れやすくなってるから、お得意さんにも迷惑かかるわなあ
このへんの感覚が壊れてるやつを俺は人間と思っていない
47 :
デフォルトの名無しさん :2013/09/30(月) 04:03:41.42
どうでもいいけど上げんなカス
48 :
デフォルトの名無しさん :2013/09/30(月) 04:15:39.95
なーぜー? (かなりふざけた口調 荒らしがふせげるのーお? ねーぼーやあ ぼーやみたいな情弱がだまったからって何にどう役立つのかねー 君も京大の霊長類研究所の方だろ、察するにwww
49 :
デフォルトの名無しさん :2013/09/30(月) 06:15:39.66
気晴らしにしてももっと痴的に
>>44 >家畜は殺しても生態系への影響がない。つまり食べていいのです。飼育して食べるのは人類の存続可能性という点でエコロジー
◎85点
52 :
デフォルトの名無しさん :2013/09/30(月) 08:38:36.25
>>51 なんでキモい言われたか気付いてないんだろ?
だっせw
>>50 家畜って育てるだけで環境負荷が結構あったよね。
温室効果ガスとしてのメタンは家畜の牛が結構な量を排出してたはず。
54 :
デフォルトの名無しさん :2013/09/30(月) 10:32:37.70
温室効果ガス出しちゃいけないの? 必要なら別に出してもいいだろバーカ
お前らいい加減にしとけ ここはム板だ プログラム以外の話をしたいのなら他の板に行け
なんでキモい言われたか気付いてないんだろ? だっせw
hogeは伸びる
58 :
デフォルトの名無しさん :2013/09/30(月) 11:32:23.30
class A{ A(void) {} } と class B{ B(void) {} } の違いを教えてください
59 :
デフォルトの名無しさん :2013/09/30(月) 11:33:20.19
ミスりました! class A { A) { } } と class B { B(void) { } } の違いです
A()とB(void)の違いってことかな 何も違わない
>>59 書き込むボタンを押す前に3回冷水をかぶれ
引数なしのコンストラクタでクラスhogeをインスタンス化するとき、 hoge hoge_(); とすると関数宣言との区別がつかないためエラーになると思いますが、 コンパイラあるいはC++の規格によってはエラーにならない場合もあるのでしょうか?
ねーよ
>エラーになる そんなコンパイラあるの?
hoge非対応コンパイラならなるんじゃないのか
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 :
デフォルトの名無しさん :2013/09/30(月) 20:53:50.25
eclipseのデバッガなんてその程度よ
VCで試してみたら
>>71 >>72 ありがとう。
VC++では問題無しです
まあ、なんだかって感じですが
//順番変えただけ
char* errorCode;
char* attrib[MaxNum];
char CN[MaxHeaderByte];
char users[buffSize];
char data[buffSize];
char DN[MaxHeaderByte];
だとうまくいくw
プログラムでも同じ症状なので、コンパイラあたりが匂うけど、
デバッガではないような気がします
ライブラリってことはないとは思うんですが、
segumentation 違反のこともあるので、うむむです。
74 :
デフォルトの名無しさん :2013/09/30(月) 21:25:21.44
pthreadのスタックサイズが、小さすぎるとか
>>74 調べた。
なるほどです。
POSIXではなく、Windowsアプリなんだけど、関係ないとも言い切れないですねぇ
コンパイルオプションかなんかで指定するんでしょうか?
>>69 定数の値はどうなってるの?gccならサイズ0の配列を定義可能だぞ
>>76 ちょいと大きめです。
4096を基本で実行しているんですが
それでもエラーが出ます。
本来なら64kbyte程度は取りたいと思っていますが、
ヒープにとってみれば?
一度クリーンして再ビルド
#undef MaxHeaderByte #define MaxHeaderByte 0
sizeof(struct test_s) sizeof(TEST_S) この2つを見てからでないと信用出来ないw
84 :
62 :2013/10/01(火) 02:04:29.37
>>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) と出力
}
で?それがお前の環境じゃエラーになるの?
86 :
62 :2013/10/01(火) 03:14:41.22
すみません、間違えました!
>>84 のコードはコンパイルエラーにはなりません。
実は人からもらったソースコードをいじってて、引数なしのコンストラクタを hoge obj1();
などとインスタンス化するとよく分からないコンパイルエラーになり、調べてみた次第です。
というわけで、質問を以下のように変更させてください。
「引数なしのコンストラクタを呼んでインスタンス化する際は、 hoge obj1(); などと
()を付けては駄目で、単に hoge obj1; とする」というのは、C++の仕様でしょうか?
>>86 "C++の"とか言う割に、new使うって発想ないんだなあ
何がやりたいんだろう
仕様を聞きたいんじゃね?
89 :
片山博文MZコスモ ◆T6xkBnTXz7B0 :2013/10/01(火) 07:27:53.39
stdafx.hを使うメリットって何ですか?
> C++の仕様でしょうか? 当たり前だろ。バカ。 コンパイラはお前より一億倍C++の仕様に詳しいので、コンパイラがエラーを出すなら、 それはC++の規格違反である可能性が極めて高い。
>>87 今時 C++ で生 new なんてほとんど使わないと思うが...
newはoldになったのだ…
C++11だと、hoge obj{}; hoge obj{1};って書けるようになるから、hoge obj; hoge obj(1);が 非対称な感じでイヤーンな人は不満解消すんじゃね?w
94 :
デフォルトの名無しさん :2013/10/01(火) 09:54:46.42
95 :
デフォルトの名無しさん :2013/10/01(火) 10:20:59.25
>>93 誰もhoge使うような気違いにはきいてないから
hoge厨は黙ってろ
C++11書いてる人でhoge obj{}、hoge obj{1}って書いてる人どれくらいいるんだろう
>>96 そもそもC++11で書いてる人が殆どいない気がする。
でも、C++11が当たり前になったら初期化子といえば{}ってくらい定着すると思う。
初期化子リストとも統一感あるし、見目麗しいじゃないかw
99 :
デフォルトの名無しさん :2013/10/01(火) 11:24:22.53
お前ら仕事で11使ってるの?
100 :
デフォルトの名無しさん :2013/10/01(火) 11:25:12.87
>>96 hogeもそんな書き方してるのもお前だけだよ
他と違う俺カッケーとか思ってんの?
>>99 C++14が出る頃にはC++11も使われてるかもな
NG推奨:hoge 半角にして登録してください。
とっくにしてる
hoge回避で荒らしがいなくなるのならそれでいいよ 別にこだわりもないし。 くだらんことでスレ使うなよ
NG推奨じゃなくて必須だろ
そもそも何で意味の分からないhogeを使うのか意味不明 メタ構文変数ならmetakoubunhensuと書けよ
意味が分からないから使うんだろ
>>109 意味が分からないってそう意味じゃないと思う。
特定の使用目的のない部屋の入り口のドアに「hoge」って書いてあったら意味が分からないだろう、
だとしたらそこは「空き部屋」と書いておくべきだ。
特定の使用目的がないのならそのことを明示しておかなければならない。
111 :
デフォルトの名無しさん :2013/10/01(火) 16:10:57.25
2つのstd::set<DATA>を合併させる一番簡単な方法は?
112 :
デフォルトの名無しさん :2013/10/01(火) 16:14:06.76
std::mapの合併もお願いします。
>>109 意味が分からない物をどうやって使うんだ?
識別子を付与して再利用してる時点で中身の意味はわかってるだろう
>>111 ,112
obj2.insert(obj1.begin(), obj1.end());
115 :
デフォルトの名無しさん :2013/10/01(火) 16:53:44.45
>>114 ありがとうございます。
C++10のマニュアル(chm形式)がダウンロードできる場所を教えて下さい。
116 :
デフォルトの名無しさん :2013/10/01(火) 17:52:18.01
アンチhoge厨に構うな。 どうしても構っちゃうよ!って奴はNGにでもしとけ。
h o g e
>>98 初期化子リストと統一感あるから困るところもあるけど
まあそんなもんか
C++11が当たり前になるのはいつなんだ 仕事ではお目にかかったことないわ
プライベートではC++11で書いてて、仕事のプロジェクトではC++03前提だけど、そのコンパイラは C++0x以上C++11未満をサポートしてるなんて場合、何がOKで何がNGなのかこんがらがったり しないんだろうか?
Hoge++11
>>126 悩んだらC++0xも封印してC++03とかで書けば良いんでない?
仕事のプロジェクトではC++0x〜C++11とか全員が把握してる保証がないと厳しいし、
C++0xっていう策定段階の仕様を業務でバリバリ使うってのも違和感があるんだが。
# そして只のC+αな言語として使われる、と。
C++0x時代が長かったから・・・
普通はC++03が前提ならコンパイラオプションでそう指定する。 だからなにが良くてなにが悪いかはコンパイラ様が教えてくれる。 混乱などしない。黙ってコンパイラ様のいうことを聞いてればいいw
そういえば先日出たVisual C++ 2013 RCは おまえらスルーなの?
普通に使ってる
使ってるけど、話題にするほどのネタがない>VC++13RC C++11のサポート不完全なままだし、VSスレでもう散々愚痴った後だし('A`)
3年目にして initializer_list がようやくサポートされたんでしょ?
今さらVC++6やらされて涙目だったけど、古いboostとSTLPort使ったら捗った
1からシステムを作る話が出てるのですが、 C++とC#でどちらにしようか決めかねています C#の方が簡単みたいでいずれ.netもOSと統合するとかなんとか 今後C#の方が需要が高くなるんでしょうか? 私としてはC++の方が汎用性もあっていいと思うのですが 今後の事を考えたらどっちがいいのかなぁ?
何のシステムかによるでしょw
横から質問ですが、C#の1つしか継承できない仕様は実際問題になったりしないんですか? 単にそういうもんだと思って使うだけの話ですか?
多重継承なんて何に使うの。インターフェースでいいじゃん
多重継承はミックスインに使う 非常に有用な機能
多重継承っていうとPowerPlantってイメージ
>>136 C++を汎用性がーという理由で使うと汎用性以前にバグとメモリリークで死ぬ
C++の生きる領域は、大規模開発するけど、どうしてもパフォーマンスに妥協できないという場面
C#は素人に優しくプロに便利だが、実質Microsoft縛りだし、
パフォーマンスは限界がある
生産性と安全性はC++と比べてはいけないレベル
C++/CLIは現実と戦いすぎなのでさっさと滅びろ
>>138 多重継承が最適解な特定の問題領域でだけ、ちょっと困る
普段は気にもしない
>>142 メモリリークはスマポ使えばいいじゃない
C#が遅いのは.netのせい?それとも言語仕様的にしょうがないの?
そういえばJavaがC++より遅いと書いたら「証拠を示せ」と発狂している奴がいたな
146 :
デフォルトの名無しさん :2013/10/03(木) 03:32:41.00
ファンクタを受けとる関数はヘッダに公開しないといけないのですか? 公開しないで隠蔽する何かいい方法ありませんか?
うーん、ファンクタじゃなく関数ポインタで受け取るしかないような
148 :
デフォルトの名無しさん :2013/10/03(木) 05:50:48.07
独学なんですがプロセスメモリ検索の方法が今いち分かりません サーチ部分を以下の用に組んだのですがどうしても遅くなってしまいます 高速でメモリサーチするにはどうしたらいいんでしょうか -------------------------------------------- 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; } }
>>146 std::function や boost::function を使う。
>>148 目的がわからないから何とも言えんが、
WindowsならAPIで特定の種類の使用領域一覧を頂いてから、
狙い撃ちで検索するとか。
詳細がほしいならWin32APIスレでどーぞ。
WTLのウインドウみたいなのって多重継承以外で解決できるの?
委譲でなんとかすんじゃね
>>154 なんでtestの実装を隠蔽してんだよcall_eachの実装を隠蔽しろよw
>>157 > ファンクタを受けとる関数はヘッダに公開しないといけないのですか? 公開しないで隠蔽する何かいい方法ありませんか?
154はファンクタを受けとる関数(call_each)がテンプレート関数として公開されてる。
このあたりで勘違いしたType erasure厨が湧く予感
単因子論か、難しいな
161 :
片山博文MZコスモ ◆T6xkBnTXz7B0 :2013/10/04(金) 17:51:19.58
PCがぶっ壊れた
同じところにソースとしてもっと適切なアーカイブあっただろ・・・
せっかく作ったのに無駄骨過ぎて糞わろたwwww
下の方が新しかったのか、間違えた。作り直しだ
167 :
デフォルトの名無しさん :2013/10/04(金) 22:28:36.41
この人電子ゴミ作るのが好きなの? つーか隔離スレから出てくるな
電子ウンコ製造機
自動運子マシン
片、ほげやったんだ
void foo(const int* p); int bar(); があったとして、 foo(&bar()); はテンポラリアドレスアクセス? void foo(const int& a); にして foo(bar()); にすれば安全?
まずコンパイルが通るコードを貼れ 後者の質問はYes
例えば、 void foo(const int* p) { printf("%d",*p); } int bar(){return 0;} foo(&bar()); とか?
一つ前のレスも読めないのかhoge/foo/bar使いは
どうせVCでも使ってるんだろ
Visual C++はコンパイルエラーになるから違うな
>>175 C++の標準がClangの状況でVCって奴は非常にすくないからな
Winの標準のC#でやれば良いのにな
>>180 >日本語の意味がわからない
日本人なら意味が分らないってレスだけど
在日人のhoge基地は"日本語の意味"ってなるからな。
日本語って書く時点で在日だし。
>>181 お前が在日という事は良く分かった
だから帰れ
ネトウヨは巣に帰れ
図星か 朝鮮人www
日本人なら
>日本語の意味がわからない
ではなく
意味がわからない
って書くよな。
つまり
>>179 は日本語を母国語としな人ってことだよな
日本語として成立はしているが意味が分からない じゃなくて 日本語として成立しているように思えない ってことだろ
わたし日本語わりません マネーマネーマネー
屁理屈はどうでもいいから日本から出てけやゴミ虫チョン
>C++の標準がClangの状況 これはどういう意味なんだ?
>>189 在日には理解できない。知り合いの日本人に聞いてね
そうかここ半年ほどム板の治安が悪いと思ってたら朝鮮人Gが湧いていたのか
標準の意味を崩して使ってるような。。。
ようなって、おまえ日本人か?
疑問符を半角で打つ奴は朝鮮人
>>178 が正しい日本語を使えない(=在日の可能性が高い)ことは間違いない
プログラマは底辺職業って言われるだけあって、日本語が禄にできない在日でもなれる職業になっているからな 日本語が駄目な在日、基地外、低脳でもなれるって どうしてこうなったんだ
おまえ「日本語が禄にできない」て それ漢字間違ってるから
ロクサーヌ」(Roxanne)は、ポリスによる曲であり、1978年にシングルとして発売
c++でado.netを使わずに(.netの機能を使わずに) sqlserverを操作したいのですが、ado.net関連の参考サイトしか見つからずにいます 主にsqlserverに接続して大量のデータを更新したいと思っています。 sqlserverにあるテーブル同士ではなく、別の場所にあるaccessにローカルテーブルとして データを持っているので、accessからデータを取ってきて 一件ずつ更新する方法しかないのかと思っているのですが、 何かいい方法がありますでしょうか? sql narive client なるものがあるようですが、 実際ado.netを使わない場合、どのような手法がとられているのでしょうか?
まず実装言語を見直すことだね
なんでこんな殺伐としてんだろうなこのスレ ここの連中はLinux板のくだ質住民の爪の垢でも煎じて飲めばいいよ
ここはwin32api、C/C++スレよりずーっと良いよ これらのスレ見るとプログラムやっている奴には基地が多いって実感する
そうだね
>>202 ID漏れの一件以来、ニュー速あたりからタバンに大勢逃げ込んでる。
タバン? 他板の読み間違い?
タイタ大迷惑だな
208 :
片山博文MZコスモ ◆T6xkBnTXz7B0 :2013/10/07(月) 13:14:10.39
まあWebブラウザより速いしね
消されるかもしれないから落とした方が それより日本語訳しろよ
どうせクソみたいな訳にしかならんから、英語のままのほうがマシ
こういう仕事が出来るだけ片山はマシだろ Qなんか本当に糞だぞ
機械翻訳できるならやってほしい さらに両方を縦繋ぎにできれば和訳で大筋を掴んでから英語を読むという素敵なことができる
>>208 片基地外、chmにして勝手に不特定多数に配布してよいのか
面白そうだから通報しとくw
CC BY-SAだろアホが
害基地はこえーな
実質、タリバンと同じ連中じゃない
質問です C++11より導入された<thread>のsleep_for()は精度的にはどんなもんでしょうか 精度を気にするならマルチスレッドにしてもnanosleep()のほうが無難ですかね ちなみに環境はlinux(art-linuxというリアルタイムOS)を利用しています 別スレのほうが適していれば誘導お願いします
ミリセコンドはあるんじゃね
こいつはsleep_forの引数がなんだとおもってるんだろう
>>222 各APIの精度って時点で環境依存だしコンパイラでは把握できないだろ。
リアルタイム用途ならAPIリファレンス読んで自分で選べば良いかと。
>>225 >コンパイラでは把握できない
why?
227 :
デフォルトの名無しさん :2013/10/08(火) 09:29:25.52
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でした。どれが正しいですか
エラー張れよ
229 :
デフォルトの名無しさん :2013/10/08(火) 09:41:42.69
array bound is not an integer constant
>>227 なぜ配列の大きさを
hoge::foo
にしないの?
232 :
デフォルトの名無しさん :2013/10/08(火) 09:47:16.89
if(hoge){ std::thread th(func); } 等とすると折角建てたスレッドの変数が スコープを抜けると共に死んでしまうので困っています スレッドを建てるかどうかを選択するのが目的です どうするのが正解なんでしょうか
234 :
233 :2013/10/08(火) 12:22:45.29
ひとまず std::thread th; if(){ std::thread tmp(func); th=std::move(tmp); } としていますが、もっとスマートな方法ないですかね
std::async使えよ
>>227 ↑
hoge厨の典型例
エラーすら貼らずに質問する知能の低さ
>>227 お前生きてるだけで迷惑なんだからせめて回線切って引きこもってろよ。
何でhoge使う奴って例外なく馬鹿なの? DQNが車高下げて爆音で音楽かける傾向があるように hoge使いは馬鹿な傾向があるの?
std::auto_ptr<std::thread> th; if (hage) th.reset(new thread(func));
>>242 基地外・馬鹿だからhogeを使っている
これは遺伝子に組み込まれた特性。本人はどうすることもできないし、治療もできない
解説やサンプルにhoge使ってる本って本当に悪本しかないよな。 よく分からずにあんな本をつかまされる初学者が可哀想。
247 :
デフォルトの名無しさん :2013/10/08(火) 19:26:10.75
hogeを使っている本なんてあるのか
auto_ptr何ソレ?あうとなの?
アウトはドイツでは自動車のこと
auto_ptrはdeprecatedだろ せめてunique_ptr使えや
std::threadがあればunique_ptr使えるはずだろうしな
>>247 本屋で本漁ってるとちょくちょく見かける
本の質は・・・・言わなくても分かるなw
なんていうか可哀想なやつだな・・・
>>226 たとえばWindowsだとどのタイマAPIがどの物理的ハードウェアに依存するかは、
ACPIだかなんだかのドライバとして何がインストールされたか等、環境依存で変わる。
完全に環境依存な話で、それを吸収するラッパとかコンパイラの提供領分を超えている。
やるとしたらSDKの仕事だが、SDKが提供してるのが精度が環境依存なAPI止まりなわけで…
11じゃなければboost::scoped_ptrだな
C++11使ったことないけど まとめるとこんな漢字? std::unique_ptr<std::thread> th; if (h0ge) th.reset(new thread(func)); なんかかっこ悪いような。もっと良いやり方ないのか
>>258 hoge厨はさっさと消えろ
NG回避までして荒らしたいのか
マジで根性腐ってるな
おもちゃが喋った!
ifの中でインスタンス確保以外しないなら thread t(hoge ? thread(func) : thread()); とかでよかろ
264 :
デフォルトの名無しさん :2013/10/09(水) 17:45:44.21
>>261 なんでヴァカが回答者気取ってるの?
お前の書き込みは価値がないんだから早く回線切れよ
266 :
片山博文MZコスモ ◆T6xkBnTXz7B0 :2013/10/09(水) 19:34:04.82
>>267 が
>>266 にアンカうってるけどあぼーんで見えない
CスレにいるキチガイっていったらQZかな
やっぱりQZはカスだな
perlでいうところの use List::Util qw(min); $min = min map { $_->value() } @a; ということをしたい場合。 つまり、配列の中の各要素の特定のメンバーの中での最小値を求めたい場合。 C++だとどういうやり方がナウいんですか?
int min = 0; for (auto n : list) min = std::min(min, n);
0点
>>272 listの要素は全て負数なの?
っていうかアルゴリズム系のにラムダ突っ込むとかそういうのは無いのか。
275 :
272 :2013/10/10(木) 14:43:29.23
ああ0から始めたらダメだな アホだったわすまん
>>272 この手の問題は第一要素を初期値にしなければならない
要素数ゼロにしてクラッシュさせる遊び
Google→[std::min_element]
minの部分はmin_elementでいけるけど mapの部分はどうするんだろ
やりたいことは特定のメンバの最小値を求めることでしょ それならmin_elementにラムダを渡せばいいんじゃない? もしそのメンバしか比較対象にならないなら、クラスに < 演算子を定義しておくとか
>>280 いきなりmin_elementに渡したら、元の要素のコピーコンストラクターが動くぞ。
std::list<std::vector<char> > a; この型に対してperlでいうところの min_size = min map { $_->size() } a; これをやろうとして、 min_elementにa.begin()やa.end()を渡すと std::vector<char>のコピーコンストラクターが動く?
>>281 何の事?もしかしてラムダの引数のこと?
それなら普通にconst参照にすれば良いよね
つまり int min = std::min_element(list.begin(), list.end(), [](const A& x,const A& y){ return x.value<y.value; })->value;
hogeはC++の知識すらたいしてないのに最新のC++11を使うからな
ラムダなしだと大掛かりになりそうだな
287 :
デフォルトの名無しさん :2013/10/11(金) 18:32:34.84
ラムダなしで単純に書こうとしても無理だろ
win32アプリケーションを使うことになったのですが、 文字列の扱いについて、 char std::string CString TCHAR PLCSTR PLCTSRT 等ありすぎて何が何だか分からなくなるのですが、 皆さんはどのように使い分けてるのですか? また、通常使うのはどの型を使ってコードを書かれますか?
WTL使ってるから普段はCString使ってる LPCTSTRとかは単なるtypedefだからわからないってことはないだろ
#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 :
デフォルトの名無しさん :2013/10/11(金) 20:17:42.30
stringが内部で勝手にメモリ確保しまくるんだけどどうやって制御すればいいhoge?
reserveすればいいhoge
294 :
デフォルトの名無しさん :2013/10/11(金) 20:22:27.58
size見ろよhage
hogeユーザーはキチガイなんので 構わないで下さい
分かったhoge
298 :
デフォルトの名無しさん :2013/10/11(金) 23:00:33.35
ポインタはsignedですか?unsignedですか?
アドレスに符号付けてどうすんの?
ポインターはポインターだ。 signedとか何イミフなこと言ってんの?
hogeユーザーはキチガイが多くて困ります。
unsigned float
hoge使いには基地外しかいない ポンタはアドレスですよ、アドレス
unsigned同士の減算の結果はunsignedになると定まっている。 ポインター同士の減算の結果はsignedである。 ゆえにポインターはsignedである。
>>304 そのアドレスを意味する数値の型はsignedかunsignedかという話しだろ
碁石の表はどっちかみたいな問題か
三時半は深夜か早朝か みたいなものか
310 :
デフォルトの名無しさん :2013/10/12(土) 00:05:15.91
311 :
デフォルトの名無しさん :2013/10/12(土) 00:06:01.31
ポンタ? ローソンのカードか?
intptr_t とかにしとけ
配列で a[0]をさすポンタ - a[10]をさすポンタ したらマイナスになるからな
ローソンで毎回必ずポイントカードはお餅ですかと聞かれてじゃまくさいんだけど、 ポンタなんか持ってる奴いるのか? あんなもの持ってどうするんだ?
>>315 聞かれるよな。あれなんか特典あるのか
ローソンはアニメ関連のこと色々やっているからポンタ貯めてアニメ関連景品ゲット!とか
317 :
710 :2013/10/12(土) 01:19:34.88
ポンタクラスの-演算はsigned intを返すからね
>>308 そりゃ歩・飛・角が表で、と・龍・馬が裏だろう?
>>315 ローソン系のパスポートアカウントだと思えば。
あれあったら、wifiつかえるんだろ?
ド近所にないからしらんのだが(ちょっといったらある)
アドレスと言っていいのはvoidポンタだけだと思う
322 :
デフォルトの名無しさん :2013/10/12(土) 02:42:22.34
>>314 ひいた結果が何かチップセレクトするのかよ?
つーかコンビニって多少高いけど背に腹は代えられない便利さで使ってるからポイントカードとかウザいんだよ ポイントカードはお持ちですか?じゃねーよ 1秒でも早く会計済ませろボンクラ ローソンのカードは作ったけど財布に入れとくとかさばるから結局家に放置してる
324 :
デフォルトの名無しさん :2013/10/12(土) 02:59:10.55
クレカ難民は相応しい板へどうぞ
ポイントカードはうざくないけど初音ミクとのコラボがうざい。 何でアニヲタに迎合してんの?
>>325 コンビニで金落とすのはヲタだからな
犬のエサみたいなコンビニ弁当とか何の肉か分からないフライドフードとか
ああいう体に悪い原価率の低いものを嬉しそうに買ってくれるのはヲタなんだよ
ビールとかしか買わない客よりよっぽどありがたいお客様なんだよ
327 :
デフォルトの名無しさん :2013/10/12(土) 04:29:13.46
ファミチキおいひぃれすぅ(^ω^)
ミクコラボはファミマで、ローソンはアニメ全般でコラボしてるイメージ Lチキバーガーうまいですー
おまえら糞レスばかりしてんじゃねーよ
でも「日本のおいしい食卓」とかいわれると普通にむかつくぜ
>>310 他人を誹謗するだけで
論理的な反論ができないようだな
>ポインタはsignedですか?unsignedですか? どっちでもいいので好きなほうを ポインタ演算で有効なのは差をとることのみだったかと
ファミチキとLチキ どっちが好き?
おっぱい
>>333 ファミチキとLチキの差は正直よく分からない
サンクスのフライドチキンなら違いは分かるけども
336 :
デフォルトの名無しさん :2013/10/12(土) 16:25:25.40
フライドチキンよりからあげくんのほうが旨い
ケンタ
338 :
デフォルトの名無しさん :2013/10/12(土) 17:16:06.94
ケンタは骨があって食べにくい。
339 :
デフォルトの名無しさん :2013/10/12(土) 19:13:50.63
ケンタッキーは衣が旨い
340 :
デフォルトの名無しさん :2013/10/12(土) 19:38:36.28
ケンタはクリスマスに行くものというイメージが強すぎて 普段は行く気がしない
ケンタのイメージ戦略は間違ってると思うよ
クリスマスは七面鳥だからな ケンタの露骨なマーケティングに騙されず普段からケンタを食べましょう
343 :
デフォルトの名無しさん :2013/10/12(土) 20:27:33.36
ケンタの公式サイト行ったらトップページでCMが3本連続で流れたんだけど、 2本目のCMがどう見てもブラック企業のサービス残業中に見えるんだ。 「サービス残業のお供にケンタッキー」みたいなイメージで推していく感じなのかな。
皆ケンタって素手で食べてる? 俺は油でべた付くのが嫌で紙に巻いて食べてたけど今は箸で食べてる
345 :
デフォルトの名無しさん :2013/10/12(土) 20:44:23.47
ケンタ専用の改造フォーク使ってる。
>>344 想像するだけでうんざりする
絶対食いたくねーよ
ファミチキでいいや
348 :
デフォルトの名無しさん :2013/10/12(土) 21:08:06.39
>>344 素手だな
但し必ずテイクアウトにして家で食ってる
C++erの食う肉。ネタか いいぞもっとやれww 軟弱者の少ないはずのスレだからな、こういうネタもいいわな
案外肉食男子が多いんだな
ケンタは実はコールスローがめちゃくちゃ美味しいから一回食ってみ って書こうと思ったけど 肉食系の流れになったから書けなくなった
352 :
デフォルトの名無しさん :2013/10/13(日) 00:59:42.96
バカにしてたサイドメニューが意外にうまいのと メインは油断しすぎがあそこだね 普通のFCに「上」を入れると受けるんじゃないかなあ 塩辛い練り物なしで、いい部位だけくれるやつ
なんなのケンタの近寄りがたいオーラ。 ここはカップル用のクリスマスグッズ専門店ですからお帰りください と言われそうな雰囲気。
クリスマスでもないのにケンタッキー行くなんて 特別な理由がないと気後れするよ うちの田舎では パーティー用総菜店だもの
プログラマーといえばジャンクフードとタバコ
356 :
デフォルトの名無しさん :2013/10/13(日) 01:24:25.03
ケンタッキーってネクタイしなくても入れる? 断られない?
ドカタはジャンクフード、アニメ、エロゲーが定番
c++初心者なのですが勉強用としてc++ primerを購入しようとおもっているのですが リファレンスとしてc++ programming languageも買った方がいいでしょうか?
359 :
デフォルトの名無しさん :2013/10/13(日) 02:09:01.51
高橋麻奈著やさしいC++から始めるといいでしょう。
>>359 他の言語学ぶ時の経験からしっかりと細かいところまで解説してあるような本を買ったほうが
困らないと思っているのとc++11のしっかりとした解説がある本がいいのでその本だと少しイメージが違います
361 :
デフォルトの名無しさん :2013/10/13(日) 02:22:25.84
そういうことなら、今は待て時期が悪いとしか言いようがない。 言いようがない。 そんな本があるならおれも知りたいが、もしかして洋書の話だったのか。
>>361 購入しようとしているとは洋書ですね
もちろん別に洋書にこだわってはいないので和書で良い物がおればそちらでも大丈夫ですが
363 :
デフォルトの名無しさん :2013/10/13(日) 02:31:38.00
ないね。 むしろ海外の掲示板で質問したほうがいいでしょう。 国内でバラエティに富む洋書を制覇した人は少ないでしょうから。 立ち読みできる種類も最近は限られてるしね。
364 :
デフォルトの名無しさん :2013/10/13(日) 02:32:51.05
そういえば、ビニール袋を破って中を見ても怒られない必殺技あるけど知りたい?
なるほど。。 では適当な海外掲示板見つけて質問してきます
ビルド中のたばこがうまくてC++を使う
367 :
デフォルトの名無しさん :2013/10/13(日) 02:44:01.99
ビルド中の飲酒が止められない。
精度や有効数字が低くていいので標準より高速なMathライブラリってありませんか?
369 :
デフォルトの名無しさん :2013/10/13(日) 11:34:54.34
glm
自作Stackクラスの感想を頂きたいのですが ここに晒してもいいでしょうか?
晒す前に留意した点を三行にまとめてみ
372 :
370 :2013/10/13(日) 12:40:44.35
>>371 C++の勉強のために作成したので、なるべく言語の機能を使って書くようにした
出来るだけ読みやすいコードになるように努めた
std::stack を真似ようとしたが、一部機能をあきらめた
以上です
すきにしろよ
374 :
370 :2013/10/13(日) 12:51:07.13
お好みでっていう話になるけど、インラインのメンバのコードはクラス定義の中に書いちゃってもいいかなと思った。
376 :
デフォルトの名無しさん :2013/10/13(日) 13:25:07.50
explicit CStack(); explicitいらなくね virtual ~CStack(); virtualいらなくね void Push(const TYPE& data);参照にしてよ const TYPE& Top() const; TYPE& Top(); 2つつくれ
377 :
370 :2013/10/13(日) 13:56:24.63
>>375 言われるとクラス定義の中に書いたほうが見やすいかも・・・でもやっぱり好みなんですかね
>>376 explicitがいらないのは余分なコンストラクタが無いから(?)でしょうか?
この宣言の使い分けがよくわからないです
通常のnewは失敗したらstd::bad_alloc例外を投げるから↓は意味ない newnode = new CStackNode<TYPE>( data ); if (newnode == NULL) exit(0);
newの後のnullチェックとか どんな教育受けたんだ
42行目。要素数TYPEはおかしくね?CStack<std::string>とかできないぞ TYPE m_elems;// スタックの要素数
381 :
370 :2013/10/13(日) 14:24:53.98
>>378 知りませんでした。消しておきます
>>379 社員(?)としての教育は受けてないです
>>380 ああ、本当ですね・・・。気付きませんでした。これはint型でいいんですかね
382 :
1 :2013/10/13(日) 14:28:09.94
こういうアホが作ったプログラムを使うハメになるユーザーが悲劇すぎる。
383 :
370 :2013/10/13(日) 15:05:36.98
クラス名にCプリフィックスやメンバ変数にm_プリフィックス付けるのをまずヤメレ
VC6まではNULL返しやがったからな ハンドラ変更で対処はできるが 今でもnew(std::nothrow)なら許す
なぜビルド中に酒がのめるんだ? 自宅でやってること?
388 :
デフォルトの名無しさん :2013/10/13(日) 16:02:06.62
残業中なら多少飲んでも怒られない会社が多い
> if (m_topnode == false) { これはカスだな 勝手にexitしてるのもカス operator= が追記みたいな動きになってるのもカス operator=の途中で例外発生したら中途半端な状態で壊れたようになって戻ってくるのもカス。 考え無しで設計してるだろ。コンテナてのはそういうものじゃねーよ。
Effective C++ だか Exceptional C++ だったかのシリーズに、 当時理想とされた実装と注意点がまとめられているから、 まずはそれを読むのがいいべさなあ
>>384 メンバ変数スコープのノーテーションはよく使われると思うんですけどそれは(スタイルの押し付けでは?)
STL 接尾辞アンダースコア
Microsoft C++ (新/旧) 接頭辞m_
Google C++ 接尾辞アンダースコア
Apple Cocoa 接尾辞アンダースコア
Mozzila C++ 接頭辞m(+キャメルケース)
393 :
デフォルトの名無しさん :2013/10/13(日) 17:21:18.77
名前はかぶりやすいけど、マイクロソフト方式だと何も考えなくても かぶらない。 そこは評価できる。
Pop の戻りはvoidにすべき operator = の戻りは*thisにすべき
接尾アンダースコアって意外と多いんだな。 個人的には視認しにくくてあまり好きじゃないのだが。
396 :
デフォルトの名無しさん :2013/10/13(日) 17:36:42.54
ハーブ・サッター hoge_ ジェイソン・グレゴリー m_hoge
>>395 >個人的には視認しにくくてあまり好きじゃないのだが。
お前もそうなのか。俺もだ。m_が実質会社の標準でそれが染み付いているんだろうが
メンバ変数にプリフィックス/ポストフィックス付けたいならアンダースコア(1個)プリフィックスが一番合理的 補完機能(VSのインテリセンスとか)があるIDEなら_を押すとメンバ変数の一覧が出てくる アンダースコアの次は必ず小文字にしておけばC++の規約ともぶつからない
付けたくないです
401 :
デフォルトの名無しさん :2013/10/13(日) 18:01:18.43
アンダースコア始まりのルールってめんどくさいから一律で禁止してるわ
>>400 それはグローバルネームスペースでの話
それ以外では「_大文字〜」が禁止されているが_の次が小文字なら問題ない
403 :
402 :2013/10/13(日) 18:12:20.06
すんません訂正 × グローバルネームスペース ○ グローバルスコープ
アンダースコアのプリフィクスやポストフィクスって「普通は触らない、内部で使うもの」 という感じがあって、少なくともpublicメンバには付けたくないな。
void CStack<TYPE>::swap(const CStack<TYPE>& ); と void swap(const CStack<TYPE>&, const CStack<TYPE>&) を実装すべし
さっぱり分らんが、moveさせるためじゃないの
素で間違えたw コピペで楽しすぎた
経験の浅い奴しか間違えない間違え方
いや、元のソースのコピーコンストラクタをコピっただけだから 言い訳スマソ
swapはthrow()が必須
>>412 アフォなアンチhogehogeちゃんに謝る必要は無い
swapでthrowすんな Effective C++ Item 25
>>406 void CStack<TYPE>::swap(CStack<TYPE>&) throw();
これ以外許さんからな
>>383 コピーアサインメントでリークしてるだロー
>>383 つうか、これ面白くなるし、お前にとっても得がたい貴重な意見を得られるだろうけど、残念ながらその話はいくらでも長くなる。
stackクラス作ってみる専用スレがあってもいいんじゃないか。
>>416 それはメンバ関数の場合だよね?
何のためにCStack<TYPE>を戻すの?
あとグローバル関数もあっていいんだよね?
そっちもCStack<TYPE>を戻せと?
質問ばかりでスマソ
>>417 の指摘に対応するため、operator = はコピーコンストラクタとswapを組み合わせて実装すべし
421 :
383 :2013/10/14(月) 06:52:53.36
>>384 ,389,394,405,406,415,416,417,418,420
あざす!おはようございます
if (m_topnode == NULL)で何を返せばいいのかわかりませんでした
throw()(例外処理?)をまだ学んでないのでswapはあきらめました
>>417 ,418
コピーアサインメントでスタックを空にするようにしました
例外知らない奴がスレなんか立てていいのでしょうか
Stack.h:
http://codepad.org/1ggMEDl0
> if (m_topnode == NULL)で何を返せばいいのかわかりませんでした Popの戻りをvoidにするのはそういう理由じゃないぞ。 学んでなくてもthrow()と書くだけだからできるだろ。 あとどうもNULLは気持ち悪い。
C++ の可変長引数テンプレートで質問です。 再帰を使って型安全なprintfもどきは書けたんですが、 JavaのString.formatでいう "%2$d %1$s" のような 参照する引数のオフセットを指定する機能をつけるにはどうしたらいいでしょうか。
424 :
421 :2013/10/14(月) 08:16:34.90
引数をtupleにぶち込んでインデクスでgetとか?試してないけど
>>424 コンテナのoperator=は
template <typename TYPE>
Stack<TYPE>& Stack<TYPE> ::operator =(const Stack<TYPE>& rother)
{
Stack<TYPE>(rother).swap(*this);
return *this;
}
このやり方しか許されないので
>>423 boost::formatのソースみりゃいいと思うよ
>>420 ,427
単純に自身にコピーするのはだめですか?
>>417 氏が指摘されたリークに関係あるのでしょうか
>>426 見間違い。忘れてください。
::が見えないくらい目が悪いので。
>>429 コピーの途中で例外発生して処理中断になったとき、お前のやり方だと中途半端な未完成構造ができるから危ない
>>425 ありがとうございます。
可変長引数を受け取ってからtupleに代入して引数の個数を取得するコードは動いたのですが、
コンパイル時に分からないn番目の要素をtupleから取得する方法が分かりませんでした。
>>429 あと今の Stack<TYPE>::Swap の実装だと、
・失敗する可能性がある
・全く効率的でない
という欠陥がある。
>>427 ,431の指摘に対応するためにはここを直さないとダメ。
>>424 初期化子を使えよ。
initなんか消せ。
copyメソッドなんか消せ。
あれを書いていいのはcopy-constructorだけだから、その中に直接書け。
書き忘れたが Swap ではなく、swap にしろ。 これは些細な問題ではない。
>>424 メンバー関数は全部小文字な。
他のコンテナーと簡単にバトンタッチできるように。
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); }
>>423 再帰で std::vector<boost::any> に詰め込めば、後からランダムアクセスできる。
ただし boost::any の type() で typeinfo を調べてから 型ごとに boost::any_cast<T> するあたりから泥臭くなる。
まあCの可変長引数と違って、実行時に型チェックができるだけマシっちゃマシかな
>>439 ありがとうございます。
これなら目的は達成できそうです。
441 :
424 :2013/10/14(月) 10:25:46.22
>>441 グローバルな swap関数を用意するのも忘れるなよ。
std::swap をオーバーライドするものとなる。
これがないとせっかく作ったメンバ関数としてのswapの価値が半減する。
>>442 ありがとうございます。
でもコレはどう考えても効率良くないですし、
タプルの一部を参照した後の処理(この例だとcoutへの出力)が探索部分の内側に隠れてしまっていて使いづらいですね。
445 :
デフォルトの名無しさん :2013/10/14(月) 18:39:00.67
2chで質問する時点で効率悪いのにこのアフォは何言ってんの?
こんなこと極めてる段階で、その気になれば(仕上げとして)Cでごりごりっと書けば 効率は出しやすいことくらいわかってるわけで、つまり、何を今さら
448 :
デフォルトの名無しさん :2013/10/14(月) 20:26:44.27
>思う なんだ思う厨か 相変わらずベンチデータもなして糞みたいな妄想を垂れ流してるんだな
関数呼び出しのコストより確実に高い。嘘だと思うなら検証してみれば? これでオッケー。
思う厨がソース出さずに確実だと言い張っても痛いだけ
451 :
デフォルトの名無しさん :2013/10/14(月) 20:37:31.54
思うhoge
ベンチマークとりまhoge
質問 あるapiでリエントラントな関数の呼び出しを要求される関数があるのですが FuncA(FuncB) FuncBはリエントラントでなければならない リエントラントというのはグローバルにアクセスしたらリエントラントでなくなる、という説明があったのですが グローバル変数を書き換えないアクセスでもアウトですか?
>>454 int nCalled = 0;
void FuncB(){
if( ++nCalled == 1 ){
do{
// do the job that may raise reentrant
}while(--nCalled);
}
}
シングルスレッドの処理系ならこんな風にも書けるな。
nCalled にアクセスしている部分は処理系によってはクリティカルセクションで囲むことになるだろう
無難なコードを書け
>>455 これでdo while間がエントラントになるということですか?試してみます
>>459 ですよね、なんかテキトーな説明が多いような
>>460 外部から書き換えると、物によっては不安定
全然問題ない 馬鹿を相手するのは無駄
>>463 絶対にタイプミスしない「理屈上」の世界の話は、他所でやってくれ。
今までwin32アプリケーションの開発はしたことがあったのですが、 mfcというものがあると知って使ってみたのですが、 win32とは全然違っていて少し戸惑っています 何かおすすめの書籍か、解説サイトがあれば教えていただけませんか? また、sqlserverを利用したいと思っているのですが、 oledbが廃止になるなんて記事を見まして、何を使おうか迷っています .netは使わない方向で行きたいのですが、 adoもサイトを見た感じですが、おすすめっぽくないのですが、 ado, dao, oledb. odbc等皆さんはどれを使っていますか?
C++erなら、そういうときは、実際の市場のアプリが 何を使ってることが多いか気をつけて見ているといい MFCもあるが、ATLもWTLもあるよ。と言っておく 一頃はdao*.dll がよく載ってたね MDAC必須とかいうアプリも結構あった 今は、sqliteが載ってるやつが多いんじゃないか
>>467 MFCによるWindowsプログラミング
お助けを visual studioを使ってプログラムを書いています ファイルパスとしてUTF 8で文字列が渡されますが、fopen_s(&fp, filepath, "w")で失敗します 恐らく文字コードをOSのエンコーディングにしなければならないものと思われますが 出来上がったものは海外でも使われる可能性があり、utf 8でfopenを行いたいのですが 内部文字コードはどうすれば変更できるのでしょうか?
諦める
一応意味不明
>>470 世界で使われるものはUTF-16にするというのがWindowsの考え。
WindowsではUTF-8のMBCSを完全にはサポートしてない。
たいした考えのない質問だとおもうけど
なぜ_wfopen_sを使わない
どうでもよいことかもしれんけど、 char *str char* str どっちが正しいの? どっちが多いの? で、どっちが好き?
下が好き
478 :
デフォルトの名無しさん :2013/10/18(金) 23:56:55.58
俺は強硬に上 案件により下を指定されることはあっても 本音はまったくブレない
479 :
476 :2013/10/19(土) 00:06:35.03
エラーメッセージを繰り返し見続けてると、どうも下が正しいように思えてくる・・・ それを含めて、自分は下なんだけど、 脳内で、 ○メモリの大きさの定義 + どんな変数か ○どんな宣言か + 単なる変数のラベル のどちらとして意識するか、なんだろうけど もっと言えば char *str[] char* str[] だと、上の方が原則に一致してるような気もする
>>479 >char *str[]
>char* str[]
整形ツールは上になるな。
char *str[], c2, *c2;など見るとわかるが、*は変数に付く。
int *a, *b, *c; のように一行で宣言するとき意外は下を使ってる C++では下が多数派な気がする
482 :
476 :2013/10/19(土) 00:13:45.43
>>480 java だと、char[] str
とかいけるでしょ。
配列は、変数に付くはずだけど、cだと変数名の後ろになる
char **
はどう説明するの?
483 :
476 :2013/10/19(土) 00:16:19.76
>>481 ほんの少しだけ話が反れるけど、
void func( int a, b, c );
ってできないよねぇ。その影響なのかも、とか思っちゃったり。
まあ、
>>480 の話が正しいような気もするけど。
char * str だな。
ポインタ型なんだから、char* strの方が直観的だと思う char *str派の人はテンプレートとかプロトタイプ宣言も離すんだろうか void foo<char *>()とかvoid bar(char *)とか
C言語だけ使ってたときは上だった C++使うようになってから俺は下になった
488 :
476 :2013/10/19(土) 00:28:35.35
>>485 確かにそうだよね。
ポインタのポインタは、char** なんだから。
だけど、そうすると、
>>480 の話と矛盾が出てくる
だから関数の引数ではまとめて宣言できない、
( = つまりまとめて宣言する方がどちらかと言うと例外 )
七日も知れんけど
型を意識するとchar* strだけど 複数変数を宣言するときの挙動を考えるとchar *str1, *str2なんだよね 俺は単体の時は型につけるけど、正直どっちでもいい
>>485 宣言としては変数に付くからchar *a、結果得られるaの型はchar*、って思ってる。
コレが気持悪いと思うなら、LPSTRでも使うかって事になると思う。
491 :
476 :2013/10/19(土) 00:43:57.28
>>490 変数に付くんだろうか?
*a は、メモリが格納される領域を宣言することになるんだよね?
int *a
と
long *a
では、同じメモリの大きさを確保するのであって
所詮「a」 はメモリのアドレスにつけられた名前でしかないんじゃないの?
*a という変数を用意しているわけじゃないし
関数の引数の話がでてくる意味がさっぱり分からない
>>491 「*」の修飾の対象が型ではなく変数名って事な。
最終的には全部結合するんだが、演算子の優先順位で型より先に変数名と先に結合してしまうというか。
494 :
デフォルトの名無しさん :2013/10/19(土) 01:12:21.82
const char *const *a, * const b;
typedef char* char_ptr; char* str; char_ptr str; typedef char *char_ptr; char *str; char_ptr str; どっち?
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 ); こうなる。 要は、引数名・変数名の直前の文字は、それがスペースであっても'*'であっても 全て型名の中に含むということ。 スペースは型名と引数名・変数名の間にある区切りではないのでこうなる。
>>491 配列だとchar str[]がchar[]型になるから、ポインタも同じで、って考えじゃないかね
どっちにしろ直観的じゃないから、Cより後の言語ではこんな宣言しないんだろう
配列は無理だけど、ポインタはchar* strって書くことができるんだから、そうした方がベターじゃないかと思うんだが
>>492 書き方統一したいのが人情ってもんじゃないかね
型を記述してんのか、型で修飾された変数を記述してんのか、で使い分けてしまえばどうって事無い。
499 :
476 :2013/10/19(土) 01:46:52.90
500 :
476 :2013/10/19(土) 01:53:51.09
>>493 ロジカルですな。
う〜ん
>>497 自分もそう思ってるんだけど
ただ、
char[] で宣言できてもよさそうなもんだけど
パースの歴史的経緯の問題なだけ。 int*a; int*b; を、 int*a,b; と書けるようにしたかったのなら、 int* a; を必須とする選択も有っただろう。 しかし実際には、 int ary[10]; int x=2; int x=3; int*abc = ary + x * y; のようなパースが難しくなるので、非現実的。
char* const strみたいな場合は、変数に*付けられないな
見様見真似のときはchar *strで ひとときchar* strをこじらせて 痛い目をみてchar *strにもどる char *strスタイルには避け得ぬバグへの抑止効果があるので絶対に譲れない
>>473-475 ありがとうございます
渡される文字をUTF-16に変換する
_wfopen_sを使う
以上2点で解決致しました
お前ら言語仕様を無視して語ってんじゃねーよ *はdeclaratorの一部であって declarationに複数のdeclaratorを書ける文法なんだから int *unko, *kuso; と書くのがすじ
unko = kuso = reinterpret_cast<int*>(506);
ウンすじ と聞いてやってきました
型名に付ける方がしっくり来るけど素直に変数名の方に付けてる
510 :
デフォルトの名無しさん :2013/10/19(土) 08:14:31.66
テンプレートの<int*>を<int *>と書くのは嫌なので int* a; だよ。一貫性が大事
どっちでもわかるから使い分ければいいかなと。
一貫性言い出したら int* a; なんて a+b / c って書いてるようなもんだぜ?
などと意味不明の供述を繰り返しており
俺は int * で統一している。 一貫性が大事。 …だが、議論してまで通すほどの内容ではないと思う。 ぶっちゃけ趣味の問題。
515 :
デフォルトの名無しさん :2013/10/19(土) 09:16:09.98
#define ptr *
int ptr a = ptr b + ptr c ptr d; 各変数の型を答えよ
>>481 俺がいる C以来、ポインタを定義するといったら、type* だろw と思ってる
もちろん既出の通り、異論は認める、ソースファイル単位で、郷に従ってるw
なるほど。 まとめると 宗 教 ってことやね。これが後の前経と後教の宗教戦争を端にした前後南北朝時代である、と。 ○どっちが正しい? 宗教なので・・・ ○どっちが多い? C時代は後教が圧倒的優勢 C++時代に入り前経が勢力を伸ばす ○どっちが好き? C++時代以降を南北朝時代と呼び宗教戦争が激化 ハイブリッド源氏も勢力を伸ばす 邪波教なる宗教も新興し混乱が増す 地域によっては、踏み絵、改宗なども随所で行われている -----以下宗教戦争の続きをどーぞ↓↓↓↓
血で血を洗う戦いの末、事態は緩やかに妥結に向かう そう、int * a; 教の隆盛である
520 :
デフォルトの名無しさん :2013/10/19(土) 09:44:02.85
std::vector<int *> これダサい
521 :
デフォルトの名無しさん :2013/10/19(土) 09:47:43.01
アフィブログの臭いがする
C++信者からすると Dはカス
関数の戻り値には int* fuck() 変数には int *you;
527 :
デフォルトの名無しさん :2013/10/19(土) 12:11:58.04
int *(*hoge)(); ダサッ
529 :
デフォルトの名無しさん :2013/10/19(土) 12:17:41.63
fack you
530 :
デフォルトの名無しさん :2013/10/19(土) 12:20:00.25
typedef int *hoge; ん〜?
>一貫性言い出したら int* a; なんて a+b / c って書いてるようなもんだぜ? int *a; => a +b /c
>>521 せめてJava使えよ・・・よりによってDはないだろDは
>>531 int ( * a )
だから何の問題も無いと思うけど???
>>526 これだな
一番楽だしこう書いて問題が起きることはまずない
int *const a;
536 :
デフォルトの名無しさん :2013/10/19(土) 14:08:01.83
>>520 それを言うなら std::vector<std::vector<int *> > っしょ
ポインタは int *a; 参照は int & r; だなぁ、なんでこうなったのかわからん。
ああ int & r; だとコンパイルエラーだすまんn
>>538 typedef int *int_pointer;
って書くの?
541 :
デフォルトの名無しさん :2013/10/19(土) 17:07:09.84
int * & r; のときはどうすんねん
変わらんだろ
そんなもんが必要なら設計から見直せ
てか、それコンパイル通るっけ?
>>540 それは誰だって
typedef int* int_pointer;
にするだろ、評価の優先順位からいって。
見た目の一致だけみて一貫性とかいってる奴はあほ
>>550 評価の優先順位という意味不明な供述をしており
typedef int* int_ptr; int_ptr a1; int* a2; これなら一貫性あっていいな
int *派が「一貫性」という日本語の意味を 理解していないことは理解したOK
区別が必要なときだけ空白を入れる 一貫性あるね
臭いものにフタをするのは一貫性とは言わない。 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の一部を くっつけようなどという発想は愚か。
>>556 > type-specifier-seqの一部とinit-declaratorの一部を
> くっつけようなどという発想は愚か。
この部分が飛躍してる
ポインタの位置論争始めたのだれだよ 終わるわけねーよ
560 :
デフォルトの名無しさん :2013/10/19(土) 19:13:22.40
void hoge(int */*a*/){} これもなんか妙だし
>>558 どのあたりが飛躍なのか説明無しに
相手を誹謗するだけのチンカス乙
562 :
デフォルトの名無しさん :2013/10/19(土) 19:23:43.77
>>556 「type-specifier-seqの一部とinit-declaratorの一部を
くっつけようなどという発想」
が「愚か」だと判断される理由は?
。>
> この部分が飛躍してる
564 :
デフォルトの名無しさん :2013/10/19(土) 19:24:38.08
boostもSTLも、みんな"*"を左に寄せてるじゃん! 右寄せしたら駄目だよ!
STLって何ですか?
Class... Args Class ...Args お前らはどっち? でClassのあとの...ってどう呼ぶんだ args... この...は演算子なんだろ?
570 :
710 :2013/10/19(土) 21:45:56.51
>>569 くそ、ちょっと笑ってしまった。
油断してたぜ。
templateのおすすめ解説書を教えて下さい 和書の方が嬉しいですが、洋書でも大丈夫です
Modern C++ Design
>>559 少なくとも「論」争レベルには達してない。
仕様確認して、あとはツールに任せればいい事を思い込みで言ってるだけ。
そもそも一行で複数の変数を定義しようってのがC系のアホなとこじゃん
そのアホなルールを通すための文法が
>>556 なわけで
なんでint a, *b; みたいに 型であるポインタが変数側に来るんだポインタは型じゃないのかよボケってとこから
出発したint* b;って書いて型を明確にしようって意味論的発想を理解できない化石脳な
カス野郎が未だに存在していることが理解不能だよ
一行で書きたがる奴は、メンバー変数も int a, *b, *const *c; みたいに書くのか?
見た目より規格の意味が大事って論調の
>>556 みたいな奴は、関数の宣言もint *foo(int *a)とかなんだろうか
変数は複数宣言のために仕方ないってのも分かるが
宣言や定義をカンマで並べる人は char *func1(), func2(), **func3(); 関数でもこうやって宣言してる?
根本的にはCの変数宣言の構文が汚いのが悪いな。 それにどう対応するかで意見が分かれる。 俺は意味論的な読みやすさを重視した方がいいな。他の言語と行き来する時に混乱しにくいし。
「*」が… もし型ならば、できるだけ左側につけて書く。 もし単項演算子なら、できるだけ右側につけて書く。 「*」を含む変数宣言・定義は一行に複数をまとめない。 まとめたいときはtypedefして「*」をなくす。 最近のライブラリはみんなこうだから、合わせておけば将来安心
終わらねえw
一行で複数の変数を定義しようってのは 古い言語だからしょうがない
モニタの解像度が糞低くて縦に間延びできなかったんだよな
>>470 コードページ間で変換を行うAPIはC標準じゃなくてWindows API側にある。
ここより適したスレで質問するべき
>>584 fopen_sにUTF8でファイル名指定したいという人に
文字コード変換は他で訊けとはこれ如何に。
しかしfopen_sとかキモイ関数はC++14にも
入るんだよなきっと
>>584 現在のロケール→ワイド文字の変換は
mbstowcs,mbsrtowcs
mbstowcs,wcsrtombs
mbrtowc,wcrtomb
snprintf(out,len,"%ls",in),swprintf(out,len,"%s",in)
で出来る筈で、この辺はC99で有効なはず。
変換したい文字コードのロケールがあれば、
setlocaleとこれらで全て相互変換出来る筈だが
・・・実際実用に出来るかというと・・・なぁ・・・
>>586 一つ前のレスも読めない文盲はしんでいいよ
>>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);
規格より俺のコードの見た目が大事っていう 577みたいなバカが設計すると cout << kuso みたいなウンコ禿ライブラリができあがる
>>587 585-586は欠片も重複して無いんだが、読んでたらどーなるんだ?
@
>>470 と関係無いレスが無くなります
A現在のロケールで表現できない文字コード間の変換ができるようになります
BC++スレでC99という関係無い言語を持ち出すことが減るでしょう
CUTF-8というWindowsのsetlocaleでは制限を受ける文字コードが扱いやすくなります
D彼女ができます
Eswprintfの使い方を間違えなくなります
F宝くじで1億円あたるかも?
>>589 リーダブルなコードを書くためには見た目が大切だよ
C言語は規格が腐っていることは既に散々言われてることだけど
今更変えることが出来ないから新規コードは書き方で工夫していこうってこと
規格でgotoを自由に使えるからといってスパゲッティなコードは
書くのは良くないという共通認識と同じレベルだよね
coutは演算子を自由にオーバーロードできるという規格をフル活用して作った
プロモーション的なものだからその反論はブーメランなんじゃないかな
これもgotoと同じでデフォルトの演算子の意味とかけ離れた再定義なんて
してはいけないことという共通認識が現在は出来てるよね
>>592 そんなこと言うからDSLちゃん拗ねちゃったじゃない!慰めてあげて><
>リーダブルなコードを書くためには見た目が大切 一貫性のない書き方は可読性を下げると主張する人に対して 「俺の書き方の方が可読性が上」の前提でレスするとか、 どうしたらこういうおつむになるんだろ
>>594 > 一貫性のない書き方は可読性を下げると主張する人に対して
それはどれだよ
「見た目が大切」はバカとの主張(
>>589 )に対して、
「見た目が大切」というレスポンス(
>>592 )。
ここまでは俺にもわかる。
>>594 は一体何を言っているんだ…
>>578 一行でまとめた方がいいときにはね。
一行でまとめてすっきりさせたり、一個ずつコメントを付けておいたり、妙な縛りにとらわれずに変幻自在にやってるよ
結論:全部typedefだ
>>597 チームで開発したことない奴はコーディングルールに縛られなくて良いよな!
あ、チームって言うのは未来の自分(=他人)も含んでの意味だからー
オナニー開発は自分のコードをメンテしなくていいのも利点だのぉ
>>597 お前は百人に一人すらいない少数派だと思うよ
>>599 コーディングルールによっては、「変数定義/宣言は一行にひとつで」とかあるんですか?アマチュアからみてもちょっと信じられない縛りですね
代表的なコーディングルールにはなにがあるのでしょうか?
>>601 変数定義じゃなくて、関数定義の話だろう
>>594 のレスに可読性はないが、何となく日本語みたいなものが表示されているので、規格は満たされているといえる
>>578 > 宣言や定義をカンマで並べる人は
> char *func1(), func2(), **func3();
> 関数でもこうやって宣言してる?
>>597 ◆QZaw55cn4c
> 一行でまとめた方がいいときにはね。
略
>>599 > チームで開発したことない奴はコーディングルールに縛られなくて良いよな!
略
>>601 ◆QZaw55cn4c
> コーディングルールによっては、「変数定義/宣言は一行にひとつで」とかあるんですか?アマチュアからみてもちょっと信じられない縛りですね
略
お前、なに途中で話を変えてんだよ
デタラメ過ぎだろ
>>601 特に強制されたわけじゃないが、いつのまにか一行一宣言になったな、俺は。
複数の宣言を併記してもタイプ量以外メリットないし。
おや昨日まで一貫性がとか言ってた人 規格をもとに論破されて 可読性に話をすり替えているようですね [[unko]] int const a alignas(100), *[[kuso]]const pb alignas(100) [1][[hage]], *[[kuso]]const pc alignas(100) [1][[hage]]; はどうするんだっけ? 一行に書かないようするん?
論破って何だよw バカは死ねよ
test<int (*const)[8]> test<int(*const)[8]> どっちが正しい?
>>601 そうでもないと思うけどね。
俺もいつの間にか一行一変数が習慣になっているなあ。
定義時初期化を心がけてるからだと思うんだけど、一行一変数の方が楽なんだよね。
ISO/IEC 14882:2011自体がコーディングルールが 全く統一されていないUNKOです
コードに芸術性を持たせるためには、 1行1mean が必須かな。 だから、1行1変数が良いと思うよ。 まあ芸術的感覚がない人には理解できんよ
>>599 未来の自分ってなんだよw
その未来に自分が生存しているなんて保障はないだろ
突っ込む所はそこではない
599がコードを書いた。 1時間後に自分でコードを修正した。 1日後にも修正予定。 ⇒ 3人によるチーム開発と599は自認 もう599が哀れで仕方ない
599はゴミクズにレスするという致命的なミスを犯した 哀れすぎる 今すぐ死んだ方が良い
/* 未来の自分へ やぁ、久しぶり。君が無事にこのコメントを読んでいるということは、デバッグはうまくいったんだね。 その間いろいろ苦労をかけたと思うけど、仕方がなかったんだ。許して欲しい。 君も知っている通り、このコードは恐ろしいバグに侵されていて現代の技術では直す術がなかった。 だから、未来の新しい技術でこの問題が解決できるときまで僕は眠ることにする。 おやすみ。 */
元ネタが思い出せない…
/****** 天気が悪いのでまったり ******/
620 :
デフォルトの名無しさん :2013/10/20(日) 12:46:59.19
/*/ なんか昼間から酒のみたくなってきた /*/
>>617 パンダの霊にでもとりつかれてんじゃねーか、兄ちゃん
// ToDoリスト // 寝る // parseInt の修正 // trim関数は必要? // 飯 // 2ch (削除予定) //
テンプレなのかなんなのかダメージが一定量を超えると粘着しだす奴いるな
#if 0 // ここをコメントアウトするとなぜかうごく ... #endif
625 :
710 :2013/10/20(日) 13:16:20.53
> テンプレなのかなんなのかダメージが一定量を超えると粘着しだす奴いるな
>>623 とかな
うんこに触ったえんがちょだからしょうがない
>>605 つまり、一行でまとめる人は脳味噌が腐ってると?
628 :
デフォルトの名無しさん :2013/10/20(日) 14:36:05.23
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; }
630 :
デフォルトの名無しさん :2013/10/20(日) 15:12:11.59
ある
ないある
ポインターってゆるゆるだから、実行時に何とかなると思ったんですけどw
C++のラムダの仕様嫁 無理 仕組みを考えればできないことは明らか
なるわけねーーだろたわけ
汚いけどグローバル変数介すしかないんじゃないの FunctionObject gFunc; Result delegate(Arg val){ return gFunc(val); } int main(){ c_function(delegate); }
std::function使えばいいだろ 何でも入るし
libffiでクロージャ作れば可能
>>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 いや、addはこっちでいじれないライブラリに入っているので、
呼び出し側でなんとかしたいのです。
bindしても元のポインタの引数の数が変わるわけじゃない Cの関数ポインタ相手に変形は無理
そうですか・・・ 引数の型と種類は知っている前提でもなんとかなりませんか? bindほど一般的な操作は求めていないので。
どうしようもないな
645 :
デフォルトの名無しさん :2013/10/20(日) 15:58:11.85
人生から見つめなおせ
>>643 Cの関数ポインタは関数のコードのアドレスそのものであり、付随するデータを受け渡す仕組みはない。よって付随するデータを受け渡す仕組みは関数ポインタを受け取るライブラリー側が別途提供するべきであり、もしそれがないならそれはそのライブラリーの欠陥と言える。
C++相談室なのに普通の質問にくだらない煽り入れる奴はなんなん
そうだね ごめんね
>>646 ありがとうございます。そもそもできないということが理解できなかったのですっきりしました。
>>647 (C++は怖い人がたくさんいるということを知らずに)初心者が見たら恐ろしくて質問どころじゃないですね・・・
ポインタって見るだけで再燃しやしないかとハラハラする
ボッ
関数ポインタの*って右に書く?それとも左?
どちらでも良い。
←
functionalとかbindってC++11から? 関数オブジェクト関係てどこまでが昔のC++かわからん
>>602 >char *func1(), func2(), **func3();
え?これが関数定義?
>>604 え?これが関数宣言?
>>617 これ,どこに書くの?
デバッグがおわって初めて見えるところって?
>>658 >>604 ごめんなさい,まがうことなき関数宣言でしたね.char (**func3)(); とかと区別が付いていませんでした
つまり char *strchr(const char *, int), strstr(const char *, const char *); のような 一行で複数の関数を宣言することを良しとしないなら、 メンバー変数やローカル変数の宣言・定義でも同じルールを適用して 一行ずつ分けておけってんだ。
訂正
>>663 > char *strchr(const char *, int), strstr(const char *, const char *);
char *strchr(const char *, int), *strstr(const char *, const char *);
こうだな。
カンマ区切りの複数宣言は最低だな!
かまい?それ誰?
構い ワ行活用ですね。
669 :
デフォルトの名無しさん :2013/10/20(日) 20:44:05.70
ごめんなさい
670 :
デフォルトの名無しさん :2013/10/20(日) 20:45:55.53
ほんとすまん
いやーわりいわりい
さーせんっした
左遷した
北国の〜
675 :
デフォルトの名無しさん :2013/10/20(日) 22:49:06.38
JR北海道
ん?また朝鮮人低脳Qが湧いていたのか
>>677 それくらいしか手は無いわな。
けど汎用性持たせる努力しすぎだろ、なげぇww
>>679 ・closure()の長さがMAX_FCN_SIZE(128)を超える
・closure()の中で別の関数と共有された相対jmpがある
・closure()の中でスタック検査などで相対アクセスが挿入される
・thisptr=(Functor *)MAX_INTの即値が分割・変形される(MIPSとかでよくあるアレや、0xFFの符号拡張等)
・mallocで確保したメモリ領域の実行可能フラグが無く、それを検査される
などの問題が無ければOK。
>>680 最後以外
>>677 と条件変わらなくね
同一環境のコードだから分割とかが問題になりそうもないし
>>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:}}ってやって長さと位置もインラインアセンブリ中で求めてた。
>>682 処理系が同じなら同じ値なんだから別に起きても大丈夫でしょ。
関連 VCのx64クロスコンパイラは、インライン汗受け付けないとかじゃなかったっけ どういうことかというと、めんどくさいぞこらMS手抜きしないで仕事しろ 一応フォローすると、ml64が添付になってるのでそれ使えぽい gccいけるとこは、自由にゴリゴリ書いてもらうとして、Win32/64の場合、 ATLにの、this埋め込み付きスタブ関数生成関数があった希ガス
めんどくせえ
> スタックポインタが動くような操作をしていいのは関数の最初と最後の部分だけ。その部分は「prolog」「epilog」と呼ばれ、やっていいことが決まっている。 うそくせえ allocaどうすんだよ。
スタックポインタは触るなって? とても信じがたいねえ gcc とかでもだめなの?なんでだめになったの?
組み込みで64bitとかないし コンパイラ開発してるんでもなきゃ いまどきインラインアセンブラなんか書かんだろ 誰が使ってるんだ
epilogとprologを生成してくれるから(non naked)ありがたいんじゃないか、 結局なんで不親切になってんだよw amd64のいい逆汗ないかねえ、無料で 有償品でよければIDAが有名だが
組み込みで64bits使ってるんですよ…
>>683 いやあの起きたらif(*(Functor**)end_ptr == (Functor*)MAX_INT)が成立しないんだが。
>>687-688 そもそもコレだけ解説しといてそれがなんと呼ばれる呼び出し規約かすら説明して無い。
Tipsや慣例(ミス削減のための規則含む)に基づく話がごっちゃになってるんじゃない?
俺はないけど、 仕事でwinの64bitでインラインアセンブラ/アセンブラを使ったプログラムを作成したことある? あるなら、どんなのをアセンブラ書いた?
USBプロテクトとかじゃないの?代表的な物は
struct stat Stat; stat(name,&Stat); 誰だよこんなうんこ考えたやつ
なにそれ
struct a A; // struct a{}; a(b,&A); // void a(int,struct a*){} てことかな?
名前と同じ構造体の関数用意して使わせるとか 気が狂ってるとしか思えない
699 :
697 :2013/10/23(水) 20:30:15.92
狂ってるけど何か文句ある?
>>695 標準関数が標準の構造体と同じ名前って
なかなか無いよな
それ設計した奴は誰?
まだ勉強中でなんですが、例外処理について皆さんの意見をお聞かせください エラー処理をする際に、その都度エラーメッセージボックスを表示させて returnさせているのですが、 throwしてcatch{}にまとめた方がいいような気がしています しかし、文字列を直接throwするのはなんだかおかしいんじゃないかと思っています、 例) try { // 例外が起きそうな処理 throw "エラーだよ" } catch (CString msg) { AfxMessageBox(msg); } エラーメッセージは自分で決めたい場合もあると思うのですが、 どのようなエラー処理がベターなのか 色々サイトを見てみましたがつかめずにいます。 Cexxeptionを継承した自作クラスを作るべきなんでしょうか? 皆さんはどんなエラー処理をしてますか?
>Cexxeptionを継承した自作クラスを作るべきなんでしょうか? 無論。面倒ならCExceptionそのまま
>>701 throw の引数はクラスにしておく
スーパークラスとしての exception クラスをつくっておき、個々のエラーは exception を個々に派生させる
>>701 例外クラス間のツリー構造を設計するのが
システム全体を設計する中での最も重要な仕事なのだよ
MFCだとCExceptionっての使う方がいいんだろうか
CExceptionは規格策定前のRTTIのオーバーヘッドが問題視されていた時代に 独自のRTTI相当機能を実装するための親クラスだったような。 まあMFC使うなら作法には従っておいた方がいい。 deleteの仕方が独特でキモイけど。
707 :
デフォルトの名無しさん :2013/10/23(水) 22:19:09.48
> deleteのほうがキモい 同感
delete必要だっけ?
正直 CException 例外の正しい投げ方がよく分からない new して投げるの?
yes
なら CFile::Open で例外投げたい時は new して渡して、 失敗してたら THROW、成功してたら delete なのか 面倒だな・・・ END_CATCH に delete がなかったと記憶してるけど delete はどうするの?
catch (CException* e) { e->Delete(); } ってやるらしい
>>712 うへえ
じゃあこれやってないとリークすんの?
例外処理でヘマするとリークするなんて仕様は愚の骨頂だな
C++では掴まざるを得ないような例外を投げないでくださいお願いします
CATCH 内で RAII してるわけじゃなくて?
717 :
デフォルトの名無しさん :2013/10/24(木) 15:25:33.16
struct hoge { hoge( int ){} }; hoge h( int() ); // warning C4930: 'hoge h(int (__cdecl *)(void))': プロトタイプされている関数が呼び出されませんでした (変数の定義が意図されていますか?) なぜ警告でますか? 警告でないようにするにはどうすればいいですか
>>717 int()の中に引数がないのはなんで?
>>717 hoge を返す h という関数を宣言したいということでよろしいか?
720 :
デフォルトの名無しさん :2013/10/24(木) 15:44:16.57
hoge h(0); だと平気なのはなんでですか
>>717 の頭が悪すぎてワラタw
プログラム以前に知能が低いw
>>720 hogeを覚えたり調べたりする暇はあってもC++の入門書を読む暇はないんだね〜へぇ〜すごく頭良さそう
毎日2〜3時間ゲームやってるくせに
毎日「忙しい忙しい」と言ってる奴が昔会社にいた
うだつのあがらない馬鹿だったけどね
typedef int(*returns_int)(); hoge h(returns_int); にすればいいんじゃない
>typedef int(*returns_int)(); >hoge h(returns_int); 底辺ドカタだとこんなコード書いても平気なんだなw typedefwwww
初心者に変な癖つけさせるのが狙いなんだろ
新卒やニートを雇うと
>>724 みたいな糞コードを平気で書いてくるマジキチがたまにいるけど。
こういうのを鵜呑みにしてるんだろうな。
生きてる価値がない。
価値がないだけならまだしも迷惑
729 :
バカ晒しage :2013/10/24(木) 17:18:34.25
724:デフォルトの名無しさん :2013/10/24(木) 16:05:58.20 [sage] typedef int(*returns_int)(); hoge h(returns_int); にすればいいんじゃない
hoge頑張れ!
>>730 荒らしにレスするな
お前も荒らしになるぞ
int tv{}; // ←primitiveにデフォ値があるんか? と hoge h{tv}; //で、なんじゃねーの
intにもデフォ値があるの知らないの?
736 :
デフォルトの名無しさん :2013/10/24(木) 19:05:28.21
今からこのスレでは typedef hoge int; が標準となります。素のintは使用禁止です。
>>737 つまんねーhageだな
shineばいいのに
誰がハゲやねん!
ハゲじゃないよ、ヘイジだよ
HANDLE hAge;
アホーとは俺のことかとエイホ(Aho)言い
>>737 わざわざコードを一行増やす理由、
及び
わざわざ文字数の多い文字列に置き換える理由、
が不明瞭
hoge厨は精神異常
745 :
デフォルトの名無しさん :2013/10/24(木) 20:22:34.50
>>730 何もしたくない。int型なのは単なる例
コードの意味を聞いてるんじゃなくて現象を聞いてるの
たとえば vector<CString> hoge()[
Effective STLに気持ち悪い例が載っているな ifstream file("test.dat"); list<int> data(istream_iterator<int>(file), istream_iterator<int>()); 綺麗な顔してるプログラムだろ? これ変な動きするんだぜ?
> istream_iterator<int>() どうしてこんなKUSO仕様がISOで承認されたのか理解に苦しむ
751 :
デフォルトの名無しさん :2013/10/25(金) 20:59:41.98
他にどうすればよかったと思う?
>>750 C++には糞仕様大好きhoge使いが多いからよ
>>750 istream_iterator<int>::end()
std::for_eachを使う理由って何ですか? 普通にforで回しちゃなぜいけないのですか? 一々関数オブジェクトなんか作成しなきゃいけないのに・・・ notなんてifの中の条件を!すればいいだけでしょ?
>>754 1行で簡潔に書くため
ラムダがサポートされているんだから関数オブジェクトもすっきり書ける
決まりきった単純なファンクタならそうできる。 いろいろ使いまわせるファンクタなら独立して書く価値がある。
せっかくイテレータがあるのに常にforでまわしてるってのは C++以外は割とイレギュラーだもんな
757が何を言っているのかわからない
しかしstd名前空間が込み合いすぎだ 安心してusing namespace std;できる程度にとどめてほしかった…
for_each(c.begin(), c.end(), [](string &s){cout << s << endl;}); for ( auto &s : c ) cout << s << endl: こんな感じだっけ?
package文とimport文があれば、気兼ねなく名前空間作れるのに。 C++だと実装むずかしいのかな。
forなのにセミコロンがないなんてっ! ++11のforはなんか気持ち悪い いまさらforeachを予約語にするのも・・・てことか
>>759 using namespace std;はやってもせいぜい関数内に留めて
基本常にstd::付けた方がいいよ
Range for は使ってみると速度が遅いな Javaと同じ書式を採用したようだけど内部の展開が悪いみたい ちなみにgcc
>>765 はRange-based forを一体何だと思ってるんだろうか
今どきだと配列使わないでlistとかvectoreとか使うの?
その遅いというコードを晒したらよってたかってダメなところ指摘してくれると思うよ
>>769 配列のほうが勝ってるケースってある?
アクセスとか挿入とかのコストとかの観点以外で
>>770 アクセスとかのコストで配列のほうが勝ってるケースがあるって自分で分ってるじゃないか。
772 :
デフォルトの名無しさん :2013/10/26(土) 17:21:52.50
測ってみると生配列のポインタよりイテレータの方が大抵早くなるわ
>>770 速度が重要なケースでは例えば自動変数の配列で良い所でvectorを使ったりしないなあ
今どき他の言語じゃなくC++を使う理由は「速度」にあると思ってるよ
forの内側でvectorやstringを宣言する気にはなれませぬ
776 :
デフォルトの名無しさん :2013/10/26(土) 18:16:54.61
なんでイテレータの方が速くなるの?
778 :
デフォルトの名無しさん :2013/10/26(土) 18:29:21.67
さあ?コンパイラに聞いてくれ
>>771 >>773 いや速度やメモリ使用量以外でもなんかメリットあるのかなぁと思って
今はそんな速度にこだわってないから,なんでもかんでもlistを使ってるんだけど
他の人はどうなのか気になってた
できればC++は難しいから使いたくないんだけど,業務だからしょうがないんだよなー
>>776 どんなコードで比較したのかを書けよ
特にお前の言う「生配列のポインタ」ってのがどんなのか
イテレータが生ポより早いなんてありえないからw
たまたまエイリアスの可能性が排除できて最適化されたのを イテレータのおかげと勘違いしたとかじゃない?
restrict
生配列ってのが何らかのAPIで確保したメモリ領域の事で、 そのAPIのコストが高かったとかいう可能性もあるな。
それかキャッシュの影響を考慮しないで測定値を鵜呑みにしてるとかだろ イテレータなんて良くて生ポそのものなのであって。。。
> memset(a, 0, sizeof a); これは笑いどころか? とりあえず配列のほうは0クリアされてない(=キャッシュにのってない)ので 比較できる条件ではない
わろたwwwww
> auto e = &a[SIZE]; これは auto e = &a[SIZE - 1]; こうだな おれの環境では最適化したら似たり寄ったりだった
>>788 それは&a[SIZE]でいい
しかしイテレータを<で比較する人はまだ絶滅してなかったか
>>790 まあそう言いなさんな
あくまでも生ポとイテレータの速度比較が目的なんだから
>>790 今どきのってどんな感じなの?
いや,煽りとかじゃなく
僕も昔の文献で学んだので気になります
>>793 memsetとか、後置インクリメントとかあったからさ。
ちょっと思った事をそのまま書き込んでしまったんだ。すまん。
俺が前回読んだときは生配列とvectorの速度比較の話だったはずなのに 今見たらポインタとイテレータの速度比較の話にすりかわってら
すり替わってるってほどすり替わてるかそれ?
今どきのCって++aが基本なの?
>>791 そのコードでvectorと配列に有意っぽい差がついてるのが興味深いな
コンパイル環境教えてほしい。逆アセしてみたい
生配列とvectorのどちらが早いかという話だから 一方にイテレータ使うと比較対象が曖昧だわな 生配列と生ポ vectorと生ポ これらで比較すりゃいい
>>795 いや,純粋に気になっただけなんだ
さんくす
>>798 後置インクリメントはコピー生成と同じ。
とりあえずideoneじゃ最適化オプションが問題だな
>>803 プリミティブ型じゃどっちでも って感じだね
++itの方が早い・・・はずだが、ideoneだと差出ないな 俺の環境だと差出たけど っつうか、同じコードなのにvectorが配列より4倍くらい遅い
>>803 型関係なくコピーはされる。
じゃないと部分式が評価される時点で変更が加えられちゃう。
/ideone.com/WaZZ5x
コストの大小で言えば、もちろん型によるだろうけど。
>>806 コンパイルオプションにちゃんと-O2付けてる?
>>808 すまん、プリミティブ型の話か。
実際に比べた事はないが、まず変わらないだろうな。
>>807 うそこけ型は関係あるだろ
プリミティブ型のi(int)を++i;した場合もi++;した場合も最適化されて↓になったぞ
movl %ebx, 4(%esp)
addl $1, %ebx
>>809 O0だった
O2つけたら確かにほとんど変わらない
>>811 すまない誤解を与える文章だった。
変わらないというのは速度の話だ。
ideoneはgcc 4.8.1 最適化はたぶんデフォルトの-O2だな
>>807 > 型関係なくコピーはされる。
変更前の値を使ってないなら、コピーを省略することぐらいは普通にやるでしょ。
コンパイラはそうしてくれるかも知れんが、実装としてはコピーでしょ
>>815 それはちょっと違くないか?
コンストラクタ通る時点で最適化止まるだろ。
>>816 ごめん、マジで意味わからん
>>817 コンストラクタ?
ごめん、こっちも意味わからん...
>>818 コピーコンストラクタで発生する副作用は最適化で消えないって意味だろ。
コピーコンストラクタで発生する副作用が全て最適化で消滅する場合は最適化の結果コピーも消えるだろうけど。
>>818 最適化って関数呼び出しとか、一定の条件で止まっちゃうのよ。
もしかしてインラインなクラス前提で話してる?
>>819 消えるのか、消えないのかはっきりしろよ...
>>822 プリミティブ型ならそもそもコピー自体しない
省略って何だって、やっぱ意味不明
もうごちゃごちゃするからレス書く前にプリミティブかクラスか両方か書こうず
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までしか数えてくれません。 あとどこが修正必要でしょうか。
ULつけるとか
>>826 32bitシフトして足すのが足りないんじゃねえの?
>>824 > プリミティブ型ならそもそもコピー自体しない
大丈夫か?
>>826 827 828に加えて
returnのところの3fを7fにしないと何やっても31までしか返らんよ?
>>826 > x = x - (( x >> 1 ) & 0x55555555);
この、元の式がおかしい
>>834 おいおい、最適化の話との区別もできなくなってるのかよ...
>>835 途中で?
この話は
>>795 が起点だと思うが、どこで変わったと思ったんだ?
途中からしか話を追ってないやつかアスペかのどっちかだからキニスンナ
>>836 >おいおい、最適化の話との区別もできなくなってるのかよ...
C言語からやり直せ
>>838 > C言語からやり直せ
ますます、イミフ (w
>>839 発想は察してやれ。
こういう考えの老害はよくいるだろ?
841 :
デフォルトの名無しさん :2013/10/27(日) 14:08:12.46
839本人なのか便乗して安全なところから人を侮辱して相対的に自分が偉くなったような感覚に浸りたいのか
どちらにしても
>>840 みたいなクズは2ちゃんにはよくいる
確かにそういう奴は2chによくいるね、ほらここにも→
>>842
プリミティブ型の++までクラスと同じだと信じて疑わないプログラマがいることの衝撃 オブジェクト指向だけやってきた弊害だろうか
そもそもオーバーライドした前置インクリメントが実際に前置インクリメントであることはドキュメントかソース見ないとわからない
for文やwhile文などでくりかえし処理をすると,繰り返しの回数が99回目までは問題ないのですが 必ず100回目で「sqrt domain error」が必ず出ます。 数値を色々変えてみても必ず起きます. sqrt domain errorはルートの中身が負のときでるエラーだと思うのですが それ以外に出る原因はありますか?
プリミティブ型の後置インクリメントでコピー発生とか言ってる人いるじゃんか
>>847 お前のプログラムが間違えている。これ以外の原因はない
>>851 コンパイラが翻訳時に間違えている可能性もあんじゃん
いつもすぐにコンパイラを疑うアホプログラマがいたが、 そいつのバグで実際にコンパイラがバグってたことは一度もない。
だからなんだよアホ
sqrtを呼ぶ前にassertで値をチェックしてデバッグビルドで実行してみたら? assert(value >= 0); sqrt(value);
>>847 入力値が非数または数値として不正なビットパターンの場合
>>854 たしかに、結構長い間マやってるけど、コンパイラのバグにぶち当たったのは X68K の gcc だけだな。
お前らc++の知識どこで手に入れてんの?
何に限らずこういう奴いるよな 「あいつは何か良い知識の仕入先を持ってるに違いない」と思う奴 今までに10回位はそういう事聞かれたわ
俺知識の仕入先よく聞かれるわ― 10回くらいそういうこと聞かれたわ―
そんなだからお前は何も出来ないんだよ
そういうときは、2chって答えることにしている
>>832 そういやそうだな・・・5=0b0101、3=0b0011・・・ってコレはコレでOKじゃん。引っかかるとこだった。
2bitだけ見るとちゃんとカウント出来てる。
00なら00-00=00、01なら01-00=01
10なら10-01=01、11なら11-01=10
でもC++の知識って他の言語と比べて手に入れにくいだろ
C++は文法、ライブラリ、コンパイラ、ターゲット環境、目的などが多岐に渡ってるから ググるにしても調べたいことが明確じゃないと混乱するってのはあるかもね まあ20年近くC++やってても正直全容がわからんし、自分のペースで学べばいいんじゃない
何とかC++って外人の書いた本読んでくと何となく分かったような気になるよ
EffectiveC++のこと?
870 :
デフォルトの名無しさん :2013/10/27(日) 21:59:55.93
読んでない人いるの?
むしろこのスレの住人は ProgrammingLanguageC++とか読んでるんだろうか
Exceptional C++とか
EffectiveC++も読んでいるか怪しい i++でもめるぐらいだし
effective c++は変な癖つくから読むなって教授に言われた
C++の本って高いからhogeサイトしか読んでない
877 :
デフォルトの名無しさん :2013/10/27(日) 23:09:57.43
投資限度額がそんなに少ないと何も成果物ができないだろ
exceptionalは真面目に読め effectiveは漫談として読め、もしくは読むな
>>871 あまりに誤植、誤訳が多い糞本だったので、
ブックオフに売りにいったら0円って言われたから、重いのでそのまま引き取ってもらった。
原著で読まないと
教授は引きこもってコード書いてるだけだから変なコードだよ で教授が読めないまともなコードは全部変な癖って片付ける
Effective C++ってみんな読んでるっぽいから、変な癖だろうがそれが主流になっちゃしょうがないね どこが変かはよく分からんが
883 :
デフォルトの名無しさん :2013/10/28(月) 00:06:33.53
どっかのスレのまね 教育的 != 実用的 必ずしもそうとは限らない
>>882 主流なわけねーよ。
-Weffc++ を日常的に使ってる奴は少数派だ。
常に付けるべしなんて言う奴はそこからさらに少数派だ。
effective c++は 頻繁に例外安全ではないコードがサンプルに出てきて そしてこれで正しいんだとのドヤ顔 プロジェクトにそんな馬鹿が居たら速攻で首になるレベル
結局どれを読めばいいの?
そのサンプルが例外安全性にフォーカスしてないだけなんじゃないの?
effective c++のクソなところ。 データメンバーをpublicにするなという話。 std::pairのような設計は完全にNGだと主張されている。まるで子供。ほんと馬鹿。 徹底したカプセル化主義者かと思いきや、データメンバーを外から丸見えにするアクセサーをひたすら肯定してる。 まず内部のデータ構造ありきで、インターフェイスは後から内部に依存するように設計されてるじゃないか。馬鹿かこの馬鹿。 この馬鹿に洗脳されたら生涯駄目人間だからな。気を付けろ。
逆にいい書き方書いてある本教えてくれよ
>>887 operator=の正しい書き方はこうだ
の例でもやらかしてるから救いようがない
四六時中例外安全を気にしてコードを書く不毛さよ これはべつにC++に限らんけどね
つまり exceptional C++ 嫁 ってことでいいのかな
893 :
デフォルトの名無しさん :2013/10/28(月) 07:03:21.99
両方読めタコ
中学生の読書感想文みたいに子供っぽい文章だな
>>891 上手にコツを掴むと気にしなくても例外安全になれるから気にしなくていいぞ
>>888 >徹底したカプセル化主義者かと思いきや、データメンバーを外から丸見えにするアクセサーをひたすら肯定してる。
変更を考慮すりゃそうするのが当たり前だろ
>>897 こういう駄目人間ができるから、effectiveは話半分で読むのがいいんだな
全部のメンバーについて片っ端にアクセサー書いてpublicで見せる奴は消えてくれ
全部そうしろなんて言ってないだろ文盲
effectiveもexceptionalも具体的な技術・仕様そのものではなくそれを通してその裏にある哲学・思想を教えるための本でしょう その段階から理解できずに即物的なテクニック・コード例としてしか読めない人には害があるでしょうね
最初にそのまま公開してしまうと、 継承したクラスがデータメンバの設置や読み出しで、 何か処理をはさみたいと思っても、できなくなる。 こんなの、Effective C++以前の問題。
namespace LogDispatch { class File : public Base { ofstream stream_; というクラスに ofstream const& stream() const { return stream_; } というメソッドを足す奴はeffective c++の洗脳を受けてる
プライベートメンバも必ず公開せよって、 どの章に書いてあるの?
>>904 const付けろって言ってる章は、
アクセス制限がより強いメンバを返す時は、
変更可能にして返すなっていう、凄く当たり前な話してるだけで、
なんでもpublicで公開しろなんて書いてないよ。
>>906 なのに、机の上にeffc++置いてる奴はアクセサーを増やすんだよな
七不思議の一つだ
なんだ想像で語ってたのか。
初心者が読むと必ずアクセサまみれのクラスばかり書くようになるのは サブリミナル効果
あの悪書は小手先の手口を癖にさせようとするから あれに染まると思考停止して安直にパターンにはめ込みたがる癖までつくんだよ まるでゾンビプログラマー
911 :
デフォルトの名無しさん :2013/10/28(月) 15:41:22.91
ならねーよ。どんな曲解してんだ
ネット上の情報を吟味せずに垂れ流してる馬鹿なんだろう
やたらアクセサ書きたがる馬鹿は何に洗脳受けてんだよ 一つはeffective C++だと分かったが他に無い? あと、アクセサを増やしてはいけないことを説明してる本はないか?
とにかくEffective C++を貶したいんだなw 自分が理解できないからって適当言っちゃ駄目だぞ
なに熱く主張してんのかとおもたら ゲッタセッタ教の譚か
ゲッタセッタ教の発祥はEffective C++だっけ?
俺の経験だとゲッタセッタ教の発祥はJava使ってるITプログラマ ずいぶん前だけど「アホ!これがオブジェクト指向というものだ!」 とか宣うプロマネの下で仕事したことある
発祥はいつなの?
初版の日本語版は20年前に出てる Java普及より古い
effective C++はC++を使い始めたばかりの20年前に読んで衝撃を受けた。 賛同できないルールも多々あったけど、名著だったと思うよ。 しかし古くなり過ぎた。 C++で仕事をする人は読んでおいて損はないと思う。 これが絶対のルールだとは思わず、こう考える人もいるのだくらいの気持ちで読めば、 結構いいヒントをたくさんもらえるんじゃないかな。 あと例外絡みのバグのほとんどはRAIIで駆逐できる。
Effective C++教とゲッタセッタ教との相関がどの程度あるかという問題に帰結するんだろ? Q1 Effective C++を信用してはならない書だと思うか? Q2 ゲッタセッタは極力減らすべきか? この相関が分かれば一発で解ける問題だな
相関あっても因果は逆かも試練
boolのゲッタにisつけろってゆー半ば法律化したルールはどこ発祥なんだろ be動詞で表現しづらいとき思いっきり無駄な考慮時間つかうんだけど
Effective C++のダメな項目を具体的に挙げてくれ
そしてこの考え方が馬鹿っぽい
>>925 考え方じゃなくて、本当に唾棄すべき項目の質問だっての
番号付いてるから分かりやすいでしょ
>>928 各論から先に行くのはEffective C++の影響?
なにいってんの
結局具体的にはなしか はあ・・・
>>924 そういう話をしたいなら、お前が率先して列挙の作業やれば?
そんなお前とそんな話をしたい奴がどれだけ居るか知らんけど
ごめんなしゃい 具体例は無いけど適当に批判してみただけです
935 :
デフォルトの名無しさん :2013/10/28(月) 20:57:46.99
で結局どこがダメなの?
まあ権威を批判する俺カッコイーってとこかね
>>931 それって、見えないフリの芝居なの?
それとも本当に見えなくなるの?
かわいそうに
ゲッタセッタ少なくするってどうすんの? なるべく関数値で返すようにしろってこと?
ゲッタセッタ教ってなんですか? ググっても説明が見つかりませんでした
構造体でやり取りする
アクセサミューテータばっかになるのは設計が悪いだけでEffective C++のせいじゃない
Effective C++信者が書くとアクセサばっかになるのはガチだけどな
946 :
デフォルトの名無しさん :2013/10/28(月) 22:04:51.47
ゲタ、セッタじゃなかったっけ。 よく知らんけど。
ああ、アクセサじゃなくてパブリック変数で返してほしいのか C++なんか捨てて、C#やれよ
948 :
デフォルトの名無しさん :2013/10/28(月) 22:09:00.96
C#高くて買えない。
>>945 一体なにがそう思い込ませてるのか、逆に気になる。
結局、コード書くのが面倒になってpublicにするようになるよ。
嫌Effective厨きめえw
アクセサばっか書いてる奴はJavaから来た奴じゃねえのか っつうか、Effective C++以外でもアクセサよりパブリック変数を積極的に使ってる本なんかあるのか?
>>953 > っつうか、Effective C++以外でもアクセサよりパブリック変数を積極的に使ってる本なんかあるのか?
誰もそんな対比してないのに、なにいってんだこいつ
アクセサかさもなくばパブリックか 典型的なゲッタセッタ病の重症患者 たぶん直らないので真面目に相手しない方がいい
956 :
デフォルトの名無しさん :2013/10/28(月) 22:39:33.17
プロパティ型があれば・・・
959 :
デフォルトの名無しさん :2013/10/28(月) 22:43:20.29
馬鹿にバカっていうとメチャメチャ怒るから言わないほうがいいよ。 怒らなかったらバカじゃないよ。
ゲッタセッタ病は治らんね 更正を頑張っても五人に一人か二人くらい
重症になるとメンバ変数の宣言からゲッタセッタ定義までマクロ化するからなww
マクロとかないわー もう完治不可能だろ
マクロで関数定義できるの?
機能的にカプセル化すべきクラスをまともに設計出来ないでアクセサだらけにして カプセル化してるつもりの奴ね データ主体のクラスならアクセサだらけでもpublicメンバ変数だらけでも良いんだが
ゲッタセッタvsぱぶりくめんばー ってスレ建てたら意外と面白いことになるかもしれない
ゲッタセッタ病は治らなかったらいつかはマクロに行き着くよ 時間の問題
>>965 そもそもパブリックメンバー派は居ないから
class BaseballTeam { DEFINE_PROPERTY(std::vector<Player>, member); ゲッタセッタ重症者の典型例
こいつどんだけ心に傷おってんの ゲッタセッタやるやつに苛められてたのかな ざまあw
メンバ変数の存在に基づいてクラスインターフェースを考えてるのがダメ。
アクセサの作りすぎが原因で破綻したプロジェクトもあるしな
どれ?
どうせお前のせいだろ
>>963 #define defvar(type,name) private:type m##name;public:void set##name(type new##name){m##name=new##name;}public:type& get##name(void){return m##name;}
うわぁ・・・・・・・・・・・
>>974 さすがにこんなこと始めるまで悪化したら
問題点が多すぎて直る気配がしない
自分が今書いてるコード見なおしてみたが、アクセサ多いなあ。 まあ、条件分岐やら上限チェックやら入れてるから仕方ないんだけども。
アクセサがやたら多くなるのは、クラスが不必要に多くの役割を与えられてる場合が多い 粒度を見直してみたらどうか?ってじっちゃが言ってた。 あとC++のクラスはJavaみたいに手なりでは書けないものだから、クラス設計してテスト 書いてからコーディングするクセをつけないと後々苦労するってばっちゃが言ってた。
役割を限定するとどんどんクラスが増えてまた管理できなくなるという。
え? クラス減らしたがる人と アクセサ増やしたがる人は 共通してんの?
>>979 必要性ガン無視でアクセサ増やすって行為は、
クラス減らした結果アクセサが増えた場合も、
そうでない場合も、どちらでも実行可能じゃない?
クラスを減らしたがる人(個々のクラスを肥大化させたがる人)の設計は、 クラス間の依存関係がカオスになりがち。 依存関係を図にプロットするツールに通すと、循環であちこちに円ができてな。 依存ツリーを図にしてるはずなのに、 なぜかインターネットプロバイダの接続図みたいになるんだよ。
ゲッタセッタ病も クラス減らし病も 循環依存設計病も 全部が繋がりあってるんだよ だからどれか一つ治そうとしても無理なんだよ
事あるごとにクラスつくる人と こまいクラス全部ご丁寧にファイル分ける人は嫌い 何の本に毒されたのやら
だがその中間はどこかということだ。 極論同士で比較してもどっちもダメに決まってるだろ。 PGクラスとSEクラスを分けるか分けないかというレベルの話だ。
SEはデザインインターフェースとコーディングインターフェースを持ち PGはコーディングのみでおk
986 :
デフォルトの名無しさん :2013/10/29(火) 09:05:11.95
ここまでCOMなし COMやりだした頃は、ゲッタセッタになりかけた 嫌々だった よく考えたら、場合によってはstruct* 返せばいいんだった
下駄に雪駄
COMは外に出すことが前提だし、ソース見えないし、しかし、 自前でしか使わないクラスにいちいちゲッタセッタは面倒だし、遅いし、無意味。
インターフェースまでちゃんと考えてくれるSEがほしい
埋め
C♭
Cff
Ctt
997 :
デフォルトの名無しさん :2013/10/29(火) 22:49:29.93
コウメバアサン
998 :
デフォルトの名無しさん :2013/10/29(火) 22:51:10.13
松竹梅はマツタケウメ
1000ならclang gcc VCでC++14前倒し実装
ウメ ← これ何に見える?
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。