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), &amp;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
【五百佛山】 真言宗智山派 【智積院】
仏法論議講説スレッド