2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

C++相談室 part104

1 :デフォルトの名無しさん:2013/08/17(土) NY:AN:NY.AN
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレに
お願いします。

前スレ
C++相談室 part103
http://toro.2ch.net/test/read.cgi/tech/1371305675/

このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.85【環境依存OK】
http://toro.2ch.net/test/read.cgi/tech/1372676667/

■長いソースを貼るときはここへ。■
 http://codepad.org/
 http://ideone.com/

2 :デフォルトの名無しさん:2013/08/17(土) NY:AN:NY.AN
2

3 :デフォルトの名無しさん:2013/08/17(土) NY:AN:NY.AN
Hogeは禁止しませんよ

4 :デフォルトの名無しさん:2013/08/17(土) NY:AN:NY.AN
NG推奨
QZaw55cn4c

5 :デフォルトの名無しさん:2013/08/17(土) NY:AN:NY.AN
STLつかうと一気に実行ファイルサイズが10倍に?!

環境によるだろ。
俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力
ランタイムを使用するようにして使っているが、例えばstd::vectorを
使っても使わない時と比べ10Kほどしか増えない

すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。

C1010: プリコンパイル済みヘッダーの検索中に予期しない EOF を検出しました。
とかいうエラーが出るんだけどこれってどうすればいいの?

#include <stdafx.h>
後死ね。

言葉が悪いな。それで教えているつもりか。
まぁヒントぐらいにはなったな。
うむごくろう。

6 :デフォルトの名無しさん:2013/08/17(土) NY:AN:NY.AN
いろいろなレベルの人間がいるプロジェクトでは全員がgotoを適切に扱えるとは限らないため、
リスクやレビュー工数軽減のためにgotoを一律禁止にしています。
ところが何度説明しても"自分は適切に扱える。出来ないやつは辞めさせるべき。"と独断で動く人がいて困っています。
どう説明すれば理解してもらえるのでしょうか。

7 :デフォルトの名無しさん:2013/08/17(土) NY:AN:NY.AN
おまえが悪い
そいつが正論

8 :デフォルトの名無しさん:2013/08/17(土) NY:AN:NY.AN
hoge禁止

9 :デフォルトの名無しさん:2013/08/17(土) NY:AN:NY.AN
>>7
どこが悪いのでしょうか
具体的に

10 :デフォルトの名無しさん:2013/08/17(土) NY:AN:NY.AN
hoge使う奴よりはマシ

11 :デフォルトの名無しさん:2013/08/17(土) NY:AN:NY.AN
>>9
goto を一律に禁止というところ
おまえの論理では throw や longjmp までが禁止なはず
標準ライブラリを全否定し、組み込みでの代替手段まで奪う暴挙は
反乱されて当然

12 :デフォルトの名無しさん:2013/08/17(土) NY:AN:NY.AN
>>11
longjumpはもちろん禁止です。
throwは原則禁止ですが、C++をまともに使える人間がいないのでそもそもthrowは使用されていません。
longjumpは存在を知っている人間がいないはずです。

13 :デフォルトの名無しさん:2013/08/17(土) NY:AN:NY.AN
ビルトイン論理演算子のショートカットを否定したり、
EOF 判定でも二度読みを強制する「ボス」には俺でも袂を分かつ

頭悪すぎ、一緒に沈没はごめんだ

14 :デフォルトの名無しさん:2013/08/17(土) NY:AN:NY.AN
>>12
了解、アスタラビスタ

15 :デフォルトの名無しさん:2013/08/17(土) NY:AN:NY.AN
そんな状況なのでレビュー工数がかさむため、
gotoは一律禁止にしたのですが、天狗がいまして…。

16 :デフォルトの名無しさん:2013/08/17(土) NY:AN:NY.AN
天狗なのはどっち?

17 :デフォルトの名無しさん:2013/08/17(土) NY:AN:NY.AN
実際に今日その人にgtotoを使わせて見たところ関数がやたら長くなりました。
それでも正しく使えていると豪語するので同説得競ればよいか質問させていただいたのですが、
流石掃き溜めというべきかプロジェクトの管理をなさる方はいないようですねここは。

18 :デフォルトの名無しさん:2013/08/17(土) NY:AN:NY.AN
そりゃあ、まずプログラム晒してなんぼだからな
本当にアドバイス欲しかったらまずそいつのプログラム晒してみろよ
ここの奴らは叩くことに関しては一流だぜ

19 :デフォルトの名無しさん:2013/08/17(土) NY:AN:NY.AN
そもそも throw を誰も使えないという時点で
叩こうにも言葉が通じるかどうか・・・

20 :デフォルトの名無しさん:2013/08/17(土) NY:AN:NY.AN
そもそもC++をまともに使える人間がいないのに何故C++使うのかと
gotoもthrowも頑なに使わないようにしてわけの分からないフラグばかりになってる糞コードなら
何度も見たことあるけど
そんなにバカなgotoの使い方してる奴は見たことないなあ
そんな奴が居るならそれこそ辞めさせるべき
バカ探知機になってかえっていいじゃん

21 :デフォルトの名無しさん:2013/08/17(土) NY:AN:NY.AN
>>17
>流石掃き溜め
なんだ、結局それが言いたかっただけの人格障害者か

22 :デフォルトの名無しさん:2013/08/17(土) NY:AN:NY.AN
自分しかC++がわからないチームで無理にC++を使わせてオレオレルールを
適用して失敗したらC++がわからない人のせいになるのですね。

23 :デフォルトの名無しさん:2013/08/17(土) NY:AN:NY.AN
3流ソフト会社のプロマネとかに>>17みたいなキチガイがやたら多いのは知ってる

24 :デフォルトの名無しさん:2013/08/17(土) NY:AN:NY.AN
このスレだけレス数の伸びがいいから開いてみたら釣られすぎ吹いたwww
夏休みすげえわw

25 :デフォルトの名無しさん:2013/08/17(土) NY:AN:NY.AN
goto使わないとネストの山になって理解しにくいコードになるのはわかっているのかな。

26 :デフォルトの名無しさん:2013/08/17(土) NY:AN:NY.AN
今日土曜なんですが、普段から曜日感覚がないのかな?あっ・・・

27 :デフォルトの名無しさん:2013/08/17(土) NY:AN:NY.AN
7拍子じゃない人にとって曜日は迷惑なだけ

28 :デフォルトの名無しさん:2013/08/17(土) NY:AN:NY.AN
休日があるプログラマーは2流

29 :6:2013/08/17(土) NY:AN:NY.AN
少し誤解がありますね。
レベルの揃わない人員でプロジェクトを進める上で必要な決め事と感じています。
実際正しく使えると豪語した人もgotoに頼り長い関数をこしらえましたので。
私個人としてはgotoは絶対禁止という思いはないです。

30 :デフォルトの名無しさん:2013/08/17(土) NY:AN:NY.AN
社畜盆に帰らず

31 :デフォルトの名無しさん:2013/08/17(土) NY:AN:NY.AN
>>6
マジレスすると、プロジェクトから外すしかない。
ので、プロマネに相談しなよ。

ただ個人的には goto は関数内に閉じるから...
1. ブロック内への goto
2. 上方向への goto
を禁止すれば、目の敵にしなくてもいいように思う。

32 :デフォルトの名無しさん:2013/08/17(土) NY:AN:NY.AN
gotoを一律禁止にしています。
gotoは絶対禁止という思いはないです。

いるよなこんなPG

33 :デフォルトの名無しさん:2013/08/17(土) NY:AN:NY.AN
ムじゃなくて、マな質問だよな
お前が書けるかどうかじゃない、これは統制だってことをわかってもらうべき

使えるプログラマは、goto無し縛り、極端な話、C++無し縛りだってできる
(後者はC++なしで軽量OOPしろってことな)

34 :デフォルトの名無しさん:2013/08/17(土) NY:AN:NY.AN
>>31
ありがとうございます。
前方へのジャンプだけなら変なフローにはなりにくいので良いですね、
うちの場合は正当に使用されているかのレビューチェックに掛かるコストをカット出来るので禁止としていました。
使用しなければキーワードで検索できますので。

35 :デフォルトの名無しさん:2013/08/17(土) NY:AN:NY.AN
>>33
ご意見ありがとうございます。
確かに板違いでした。
今日のgotoの件で頭に血が上っていたようです。

36 :デフォルトの名無しさん:2013/08/17(土) NY:AN:NY.AN
使えるプログラマはgoto無し縛りだってできる
といってifネストの山を量産させるのですね。

37 :デフォルトの名無しさん:2013/08/17(土) NY:AN:NY.AN
>>29
長い関数が問題ならそれを説明して分割させろよ。
それができれば goto 禁止なんてする必要ないし、
goto 禁止したって何の解決にもならないよ。

38 :デフォルトの名無しさん:2013/08/17(土) NY:AN:NY.AN
長い関数書くなよ!って命令しても書いちゃうよ
長い関数なんて誰も好きで書いてるわけじゃないんだから。勝手に長くなってるんだから

39 :デフォルトの名無しさん:2013/08/17(土) NY:AN:NY.AN
だからちゃんとしたレビューと訓練が必要なんだろ。
goto 禁止したからといって何になるというのさ?

40 :デフォルトの名無しさん:2013/08/17(土) NY:AN:NY.AN
なぜ関数が長くなっているかが分からないと何とも言えないけれど。

41 :デフォルトの名無しさん:2013/08/17(土) NY:AN:NY.AN
まあ糞PG使わされる身ならそういう極論に走るのも無理は無い

42 :デフォルトの名無しさん:2013/08/17(土) NY:AN:NY.AN
コードの再利用性を高める目的などでコードが多くなることならある。

43 :デフォルトの名無しさん:2013/08/17(土) NY:AN:NY.AN
CプログラマがC風に書く
C++erがダメ出し「STL使って簡潔に書け」
ビルドする
バイナリはCのほうが簡潔

44 :デフォルトの名無しさん:2013/08/17(土) NY:AN:NY.AN
バイナリはCのほうが簡潔wwwwwwwwwwwwww

45 :デフォルトの名無しさん:2013/08/17(土) NY:AN:NY.AN
そのバイナリの簡素さが要求されているのでなければ簡素なソースが優先だよね。ね。

46 :デフォルトの名無しさん:2013/08/17(土) NY:AN:NY.AN
OO、RAII、例外安全を使いこなせるPGなら
関数は自然と短くなるはず。

47 :デフォルトの名無しさん:2013/08/17(土) NY:AN:NY.AN
バイナリの軽さを軽視するやつは C++ 界から消えてなくなれ
そういうやつの声がでかいだけで迷惑千万だ

48 :デフォルトの名無しさん:2013/08/17(土) NY:AN:NY.AN
そんなのが要求されるプロジェクトなんて稀ですし
要求される場合はゴリゴリ軽くするよ

「バイナリを軽くしか出来ない人」の方が迷惑

49 :デフォルトの名無しさん:2013/08/17(土) NY:AN:NY.AN
ソースの読みやすさを軽視するやつは C++ 界から消えてなくなれ
そういうやつの声がでかいだけで迷惑千万だ

50 :デフォルトの名無しさん:2013/08/17(土) NY:AN:NY.AN
意味わかんね

処理を削れば軽くなるが、それしか出来ない人ってどういうことだ?
てけとーに攻撃的な言葉をならべて遊んでるだけだろどーせ

51 :デフォルトの名無しさん:2013/08/17(土) NY:AN:NY.AN
可読性と簡潔さは両立させるものだし

52 :デフォルトの名無しさん:2013/08/17(土) NY:AN:NY.AN
>>47,49
両立しろよてめーらwww

いやマジレスすると、C++ってのは、それを両立して極めろって後輩に仕込んでくれ
C/C++は他言語を、OSを統べる言語。別格なんだよ、わかるだろ

53 :デフォルトの名無しさん:2013/08/17(土) NY:AN:NY.AN
冗長に書けば可読性が増すと思ってる馬鹿だろ。
たまにいる。

54 :デフォルトの名無しさん:2013/08/17(土) NY:AN:NY.AN
なんかさー、最適化もただ頼るだけみたいに非科学的なやつ多すぎるんだよね
どう書いたらどう最適化されそうかくらいは考えろってさー

55 :デフォルトの名無しさん:2013/08/17(土) NY:AN:NY.AN
実測して問題なきゃそれでいいんだよ

56 :デフォルトの名無しさん:2013/08/17(土) NY:AN:NY.AN
バイナリアンが客先に紛れ込んでるってことも、頭のどっかには入れておくべき
CC CC CC ... ってpadされてるバイナリを渡したらどう思われるか、とかね

57 :デフォルトの名無しさん:2013/08/17(土) NY:AN:NY.AN
ハッシュも「実測して問題なければ」いいとかね
等値比較する必要があるかどうかさえ、
とにかく把握する気がないやつは底なし

58 :デフォルトの名無しさん:2013/08/17(土) NY:AN:NY.AN
-底なし
+見境いなし

59 :デフォルトの名無しさん:2013/08/18(日) NY:AN:NY.AN
能なし

60 :デフォルトの名無しさん:2013/08/18(日) NY:AN:NY.AN
節操なし

61 :デフォルトの名無しさん:2013/08/18(日) NY:AN:NY.AN
玉なし

62 :デフォルトの名無しさん:2013/08/18(日) NY:AN:NY.AN
>>57
お手軽ハッシュでいいのない?

63 :デフォルトの名無しさん:2013/08/18(日) NY:AN:NY.AN
>>62=ろくでなし

64 :デフォルトの名無しさん:2013/08/18(日) NY:AN:NY.AN
>>54
悔しいが同意せざろうえない

65 :デフォルトの名無しさん:2013/08/18(日) NY:AN:NY.AN
ゆとり言語になったC++で最適化ってなんかへんな気がする

66 :デフォルトの名無しさん:2013/08/18(日) NY:AN:NY.AN
と、無能のつぶやき頂きました

67 :デフォルトの名無しさん:2013/08/18(日) NY:AN:NY.AN
いくら進んでも先が見えない難解言語がゆとりと言うなら
世の中ゆとり言語しか無い

68 :デフォルトの名無しさん:2013/08/18(日) NY:AN:NY.AN
Chaos++

69 :デフォルトの名無しさん:2013/08/18(日) NY:AN:NY.AN
ゆとり化しすぎてChaos++になってしまったよ
ってことですね

70 :デフォルトの名無しさん:2013/08/18(日) NY:AN:NY.AN
カオスなのかゆとりなのかどっちなのか

71 :デフォルトの名無しさん:2013/08/18(日) NY:AN:NY.AN
注意一秒バグ一生
切れ味強すぎて危険

72 :デフォルトの名無しさん:2013/08/18(日) NY:AN:NY.AN
クラスについて勉強してるんだけど
さっぱりわからん
これが無いとどういったときに不便になるの?
無くても困らないケースはある?

73 :デフォルトの名無しさん:2013/08/18(日) NY:AN:NY.AN
クラスにまとめておけば関数名を覚えてなくてもインテリジェンスで選べる

74 :デフォルトの名無しさん:2013/08/18(日) NY:AN:NY.AN
カプセル化が必要ない小さなプログラムなら必要ない

多分最初は不思議に聞こえるが、クラスは外からのアクセス方法を制限することによって
その保守性とか目的を明瞭にしてるというか

誰かエロイ人もっと上手く頼む

75 :デフォルトの名無しさん:2013/08/18(日) NY:AN:NY.AN
整理整頓して区別する時に便利なもの。
無くてもそれができる人なら困らないけど、
そんな人は少ない。

76 :72:2013/08/18(日) NY:AN:NY.AN
あー大体分かってきた
お前らありがとう
正直門前払いされるんじゃないかとビクビクしてたが質問してよかった

77 :デフォルトの名無しさん:2013/08/18(日) NY:AN:NY.AN
あ、重要な事が抜けてた。
区別できてるか判断するのは、自分じゃなくてソースを読む大多数の他人だから。
これを理解してないと、意味が全然違う。

78 :デフォルトの名無しさん:2013/08/18(日) NY:AN:NY.AN
>>72 がうらやましい‥‥

79 :デフォルトの名無しさん:2013/08/18(日) NY:AN:NY.AN
アクセス方法を制限

80 :デフォルトの名無しさん:2013/08/19(月) NY:AN:NY.AN
今北
クラスがなぜ必要かと言ったら、クラスで記述するおいしいライブラリがあるからさ

クラスの良さに気付ければ、めくるめくC++の奥深さを楽しめるようになる

81 :デフォルトの名無しさん:2013/08/19(月) NY:AN:NY.AN
vector<int>* pvVal = ・・・;

int Val = ( *pvVal )[ 3 ];


このように記述したとき、
( *pvVal )のところで一時オブジェクトが生成される心配はないでしょうか?
もしそうだとすると、巨大なvectorではとてつもないコストになってしまいます。

VisualStudio2012でステップ実行して確認したところ、
vectorのコンストラクタには行かず、
operator[]に行ったので大丈夫と思っていいでしょうか?

82 :デフォルトの名無しさん:2013/08/19(月) NY:AN:NY.AN
別に*操作はオブジェクト生成してるわけじゃないよ

と思ったが確信はないな・・・

83 :デフォルトの名無しさん:2013/08/19(月) NY:AN:NY.AN
ナマポの実体化は「決して」一時オブジェクトを生成しない

84 :81:2013/08/19(月) NY:AN:NY.AN
>>82-83
ありがとうございました!!
安心しました!!

85 :デフォルトの名無しさん:2013/08/20(火) NY:AN:NY.AN
>>72
デストラクタでリソースを解放することを覚えるとCには戻れなくなる

86 :デフォルトの名無しさん:2013/08/20(火) NY:AN:NY.AN
なんでJAVAとかC#にはデストロイヤーがないの

87 :デフォルトの名無しさん:2013/08/20(火) NY:AN:NY.AN
>>86
//I believe gc :)

88 :デフォルトの名無しさん:2013/08/20(火) NY:AN:NY.AN
GCってVRAMのメモリも自動で開放してくれんの?

89 :デフォルトの名無しさん:2013/08/20(火) NY:AN:NY.AN
GC で勝手にやってくれるから
空間制御は楽になったが、時間制御が難しくなったと言う

90 :デフォルトの名無しさん:2013/08/20(火) NY:AN:NY.AN
RAIIを徹底すればGCなんて全然要らない
時間軸の細かい制御も容易にできる

91 :デフォルトの名無しさん:2013/08/20(火) NY:AN:NY.AN
そういう部分だけJNIとかを使えばいいんです。

92 :デフォルトの名無しさん:2013/08/20(火) NY:AN:NY.AN
お、おう。。

ってそういうことじゃなくて、だからC++はイイ!って話だろw >>72,85

93 :デフォルトの名無しさん:2013/08/21(水) NY:AN:NY.AN
あ、IDisposable (小声)

94 :デフォルトの名無しさん:2013/08/21(水) NY:AN:NY.AN
>>89
初心者にGCで解放されるものとされないものの区別を教えるのが難しい。

95 :デフォルトの名無しさん:2013/08/21(水) NY:AN:NY.AN
強参照、弱参照、ファントム参照と言っても初心者は分からない

96 :デフォルトの名無しさん:2013/08/21(水) NY:AN:NY.AN
>>95
ファントム参照って何ですか?

97 :デフォルトの名無しさん:2013/08/22(木) NY:AN:NY.AN
>>95
そのあたりは初心者どころか中級者でも
各VMの実装の詳細まで把握してる奴は少ない

98 :デフォルトの名無しさん:2013/08/23(金) NY:AN:NY.AN
下記は関数内の静的変数と自動変数の値が保持されるか、というテストコードなのですが、実行結果を見ると両方とも値が保持されています。
自動変数は宣言された関数内で死ぬと思うんですが、なぜこの結果になるのかわからずにいます。よろしくお願いします。
環境:win32, gcc version 4.7.2 (GCC)

#include <iostream>
static void test(int*& pa, int*& pb) {
 static int a = 10;
 int b = 5;
 pa = &a;
 pb = &b;
}
int main(void) {
 int *pa, *pb;
 test( pa, pb );
 std::cout << "*pa = " << *pa << "\n" << "*pb = " << *pb << std::endl;
 return 0;
}
結果:
*pa = 10
*pb = 5

99 :デフォルトの名無しさん:2013/08/23(金) NY:AN:NY.AN
pbはtestから戻った後は参照してはならないポインター。
なのでたまたまプログラムが動いた様に見えるだけ。

100 :デフォルトの名無しさん:2013/08/23(金) NY:AN:NY.AN
clang ではちゃんとコケるね

101 :98:2013/08/23(金) NY:AN:NY.AN
たまたまですか・・・。こういうことってよくあるんですかね?
printf()で参照したときに落ちると思ったんですが。
>> 100
clangって使い勝手いいですか?gccと比べて

102 :101:2013/08/23(金) NY:AN:NY.AN
printf じゃなくて cout でした。

103 :デフォルトの名無しさん:2013/08/23(金) NY:AN:NY.AN
clangには未定義やらかしたらぶち殺すというポリシーがあるが他のコンパイラはわずかでもコストがかかるからそんなことしない

104 :デフォルトの名無しさん:2013/08/23(金) NY:AN:NY.AN
>>101
してはならないって事をしても死なないってことは良くある

105 :デフォルトの名無しさん:2013/08/23(金) NY:AN:NY.AN
>>103
C++ユーザーにゆとりが増えているからそんな動作にしないといけなくなっているのか

106 :102:2013/08/23(金) NY:AN:NY.AN
ゆとりなのでclangに浮気しようかな・・・
>>104
やっぱりありますよね・・・

皆さんありがとうございました。

107 :デフォルトの名無しさん:2013/08/23(金) NY:AN:NY.AN
>>106
浮気はしまくりの公衆便所やっとけ
この業界、純粋培養にいいことは何もない

108 :デフォルトの名無しさん:2013/08/23(金) NY:AN:NY.AN
iniファイルからセクション名一覧を取得して、セクション名をsplitするという処理をしたいのですが、
取得したセクション名の区切りがヌル文字なせいか1つの文字列として認識してくれません。
どうしたらいいでしょうか?

コードではfor文を使ってsplitしたセクション名をSectionNameに入れています。

char SectionNames[1024];
GetPrivateProfileSectionNames(SectionNames,1024,FilePath.c_str());

char *WTF;//謎の内部パラメータ
char *CheckString;

for(CheckString = strtok_s(SectionNames, "0" ,&WTF); NULL != CheckString ; CheckString = strtok_s( NULL, "0" ,&WTF)){

 string SectionName = CheckString;
 //Section名を使った処理

}

変数の頭文字が大文字なのは見逃してください

109 :デフォルトの名無しさん:2013/08/23(金) NY:AN:NY.AN
>>103
素敵なポリシーだな
デバッグツールでも死んだポインタにデタラメな値を入れてわざとエラーを
引き起こすようにしたりするね

110 :デフォルトの名無しさん:2013/08/23(金) NY:AN:NY.AN
>>108
さっぱりだけど
for(CheckString = strtok_s(SectionNames, "0" ,&amp;WTF); NULL != CheckString ; CheckString = strtok_s( NULL, "0" ,&amp;WTF)){
がうまく動作しないってこと?
ここよりはC/C++スレのほうで聞いたほうが良いって気がする

111 :デフォルトの名無しさん:2013/08/23(金) NY:AN:NY.AN
>>108
110だけど、あてずっぽうだけどここが参考になるかも
http://vcpptips.wordpress.com/tag/getprivateprofilesectionnames/

112 :デフォルトの名無しさん:2013/08/23(金) NY:AN:NY.AN
>>108
char SectionNames[1024];
GetPrivateProfileSectionNamesA(SectionNames, 1024, FilePath.c_str());

char *CheckString = SectionNames;

while (*CheckString) {
string SectionName = CheckString;
std::cout << SectionName << endl; //Section名を使った処理
CheckString += SectionName.length() + 1;
}

113 :デフォルトの名無しさん:2013/08/23(金) NY:AN:NY.AN
>>112
ありがとう

114 :デフォルトの名無しさん:2013/08/24(土) NY:AN:NY.AN
for(int i=0;0==a[10];i++){

}
このループってメモリーアクセスするじゃないですか、a[10]に。
しからばfor loopの前に
const x=a[10];
を追加すしてxに対して同様の行為をするのが速くする方法ですか?
でなければ正解を教えてください。

115 :デフォルトの名無しさん:2013/08/24(土) NY:AN:NY.AN
は?const x=a[10]じゃ無限ループになるか一回もループしないかになるだろ
正解はそのコードだけじゃなんとも言えないなあ、a[10]って一体何なんだよw

116 :デフォルトの名無しさん:2013/08/24(土) NY:AN:NY.AN
for(int i=0;i==a[10];i++){

}
このループってメモリーアクセスするじゃないですか、a[10]に。
しからばfor loopの前に
const x=a[10];
を追加すしてxに対して同様の行為をするのが速くする方法ですか?
でなければ正解を教えてください。

programmeのミスでした。
すみませんやり直したので見てください。

117 :デフォルトの名無しさん:2013/08/24(土) NY:AN:NY.AN
if (a[10]>=0)i=a[10];
else goto hell;

118 :デフォルトの名無しさん:2013/08/24(土) NY:AN:NY.AN
>>114
aが組み込み型の配列だと仮定したうえで、

aがローカル変数でそのアドレスを他の関数に渡したりメンバ変数、グローバル変数へ代入していないなら
普通はコンパイラの最適化に任せれば自動で最適化してくれる。

aがメンバ変数、グローバル変数の場合には普通自動で最適化はできないので速さに拘るなら
そのxのように手動で書く必要がある。

どちらの場合でもconst xと書いたほうが値が不変であることを明示できるのでコードの意味が分かりやすくなる。

119 :デフォルトの名無しさん:2013/08/24(土) NY:AN:NY.AN
for(int i=a[10];i==0;i--){

}
といいたいわけですか?
これはこちら側の設定ミスでした。
もう一度コードを書き直してきます。

120 :デフォルトの名無しさん:2013/08/24(土) NY:AN:NY.AN
while(x==a[10]){

}
としておきましょう。
しからば
const char x=a[10]
while(i==a[10]){
i=ランダムな文字;
}
でオッケーですよね。
ありがとうございました。
書かなくてもwhileの内部で代入がなければ最適化される。
そのときの最適化はxへの代入が無い分上記のコードよりさらに速い。
すなわちxに代入することなく直接レジスターに入れられるということで。
がしかしマルチスレッドで変えられる可能性があるから最適されないなんてことは無いですよね。

121 :デフォルトの名無しさん:2013/08/24(土) NY:AN:NY.AN
それで合ってるよ
もしくはfor(int x=a[10]; ...)でもよい

122 :デフォルトの名無しさん:2013/08/24(土) NY:AN:NY.AN
にしても日本語といいコードといい絶望的にレトリックがないな
ときどきいるんだけど釣りを疑ってしまう

123 :デフォルトの名無しさん:2013/08/24(土) NY:AN:NY.AN
>>120
>書かなくてもwhileの内部で代入がなければ最適化される。
whileの外でaのアドレスをどっかに代入してwhile内部で何らかの関数を呼び出しているなら最適化は期待できない。

>そのときの最適化はxへの代入が無い分上記のコードよりさらに速い。
>すなわちxに代入することなく直接レジスターに入れられるということで。
const char xと明示的に書く場合とコンパイラが可能な時にする最適化の速度は変わらない。
const char xと書いたからといってスタックが確保されるかどうかは別問題。

>がしかしマルチスレッドで変えられる可能性があるから最適されないなんてことは無いですよね。
その通り。コンパイラは他のスレッドの存在を無視して最適化する。いちいちそのことを考慮すると糞遅くなる。

124 :デフォルトの名無しさん:2013/08/24(土) NY:AN:NY.AN
ありがとうございます。
whileの外部でaのアドレスが代入したことなんてコンパイラーが調べるんですか?
多分そんなめんどくさいこと調べないですよね?
だからwhile内部で関数呼び出しがあった場合、その関数がaのアドレスの先のメモリーを
書き換えるかも知れないから最適化はされませんと考えた方が良いですよね。

125 :デフォルトの名無しさん:2013/08/24(土) NY:AN:NY.AN
>>124
普通に調べると思うけどね。コンパイルしているコードだけを見ればいいんだから簡単。

126 :デフォルトの名無しさん:2013/08/24(土) NY:AN:NY.AN
マルチスレッド化したいのならmutex()か何かで囲んでアトミックにしとけ

127 :デフォルトの名無しさん:2013/08/24(土) NY:AN:NY.AN
class A{ … };

class B{
A a;

};

のようにAの内部クラスBをAの外側で書くことはできないのでしょうか?

128 :デフォルトの名無しさん:2013/08/24(土) NY:AN:NY.AN
>>127
なにがしたいかわからん
それのどこにコンパイルエラーになる要素があるんだ

129 :デフォルトの名無しさん:2013/08/24(土) NY:AN:NY.AN
あ、あれ?本当だ
すみませんでした
ありがとうございました!

130 :デフォルトの名無しさん:2013/08/24(土) NY:AN:NY.AN
>>127
ついでに「コンポジション C++ クラス」でぐぐっとけ

131 :デフォルトの名無しさん:2013/08/24(土) NY:AN:NY.AN
ありがとうございます
頑張ります!

132 :デフォルトの名無しさん:2013/08/24(土) NY:AN:NY.AN
>>127
内部クラスBをAの外側に書いて、class Aはclass Bでしか使えないようにするにはどうするの

133 :デフォルトの名無しさん:2013/08/24(土) NY:AN:NY.AN
ごめんなさい。間違えた
>>127のようにして
内部クラスAをBの外側に書いて、class Aはclass Bでしか使えないようにするにはどうするの
です。

134 :デフォルトの名無しさん:2013/08/24(土) NY:AN:NY.AN
class B
{
class A;
...
};

class B::A
{
...
};

この方法だと前方宣言不可能
前方宣言したい場合はfriendクラスとか

135 :デフォルトの名無しさん:2013/08/24(土) NY:AN:NY.AN
おっ、組み合わせると
class C
{
friend class B;
private:
class A
{
...
};
};

class B
{
C::A a;
...
};
とかできるかも知れんな

136 :デフォルトの名無しさん:2013/08/25(日) NY:AN:NY.AN
すごい初歩で申し訳ありませんが

class A {
  public:
    A(int x, int y);
    A(int x);
}

A::A(int x, int y) {
  なんとかかんとか
}

という風です。
次に、A(int x) の引数でコントラスタを生成されたとき
最初の A(int x, int y) の y を既定値で呼び出したいのですが

A::A(int x) : A(x, 0);

でいけるかと思ったけどエラー出ました。
よく分からないので、 A::A(int x, int y) の中に記述した なんとかかんとか を丸コピーしましたが
コントラスタから他のコントラスタを呼び出すことは出来ませんでしょうか。

137 :デフォルトの名無しさん:2013/08/25(日) NY:AN:NY.AN
init関数を作って両コンストラクタでそれを呼び出しなさい

138 :デフォルトの名無しさん:2013/08/25(日) NY:AN:NY.AN
>>136
それはC++11から使えるようになった委譲コンストラクタってやつ。
C++11対応コンパイラで -std=c++11 つければ使える。

139 :デフォルトの名無しさん:2013/08/25(日) NY:AN:NY.AN
うえ、そんなわけがわからなくなる機能が追加されるのかよ

140 :デフォルトの名無しさん:2013/08/25(日) NY:AN:NY.AN
>>136
> 最初の A(int x, int y) の y を既定値で呼び出したいのですが

それだけなら、デフォルト引数でいいと思うが。
「規定値」なんだし。

141 :136:2013/08/25(日) NY:AN:NY.AN
メンバ変数に対しては
  A::A(int x) : B(x)
みたいな初期化の方法があるので、その延長みたいなのがあるのかなぁと思ってました。


>>138
なんと、最新のコンパイラは出来るんですか。


>>140
デフォルト引数で可能なことを例で書いてしまいましたが
そういう意図じゃなかったです。。

142 :デフォルトの名無しさん:2013/08/25(日) NY:AN:NY.AN
>>139
どこか困る部分ありそう?
初めて見た時やっと入ったのかと思ったもんだけど。

143 :デフォルトの名無しさん:2013/08/25(日) NY:AN:NY.AN
脳みそが進化についてこれない人には辛いだろうな

144 :デフォルトの名無しさん:2013/08/25(日) NY:AN:NY.AN
>>142
今までコンストラクタの中で別のコンストラクタを呼ぶのは
一時オブジェクトを作るだけだからコードが読みにくくなるだけなので個人的に禁止していた
これ以降OKになると思うと混乱しそう

145 :デフォルトの名無しさん:2013/08/25(日) NY:AN:NY.AN
>>144
委譲コンストラクタと、一時オブジェクトの作成は意味が違うじゃないですか

146 :デフォルトの名無しさん:2013/08/25(日) NY:AN:NY.AN
書き方が似てるから混乱する
そもそもその位置に来れるのはメンバだけだろうが!ってなる

147 :デフォルトの名無しさん:2013/08/25(日) NY:AN:NY.AN
>>143
俺もその通りだと思う
ラムダとか絶対理解出来ないと思うんだよね…

148 :デフォルトの名無しさん:2013/08/25(日) NY:AN:NY.AN
>>146
基底クラスと仮想基底クラスが来てただろうが

149 :デフォルトの名無しさん:2013/08/25(日) NY:AN:NY.AN
>>148
お前その2つを混同してたのか?
頭わるすぎ

150 :デフォルトの名無しさん:2013/08/25(日) NY:AN:NY.AN
無名関数って何に使うんですか?
std::listのソート条件とかに使ったことはあるのですが、それだけ・・?って感じです

151 :デフォルトの名無しさん:2013/08/25(日) NY:AN:NY.AN
>>136
A(int x, int y = 0);
とどう違うんですか?

152 :デフォルトの名無しさん:2013/08/25(日) NY:AN:NY.AN
>>150
いちいち関数オブジェクト作ってたようなのが一切合切消える

153 :デフォルトの名無しさん:2013/08/25(日) NY:AN:NY.AN
>>150
そのそれだけがでかい
一行程度の処理なのに関数外に書かないといけなかったから、
効果対費用を考えると躊躇この上なかった

154 :デフォルトの名無しさん:2013/08/25(日) NY:AN:NY.AN
>>149
混同? どこから湧いて出たんだ、そんな発想
まあ、もともとメンバだけつってたアホだけに何でもありうるが

155 :デフォルトの名無しさん:2013/08/25(日) NY:AN:NY.AN
>>136
配置newをつかえば無理矢理できないこともない

156 :デフォルトの名無しさん:2013/08/25(日) NY:AN:NY.AN
ラムダ式使えるなら<functional>系はいらなくなっちゃうの?

157 :デフォルトの名無しさん:2013/08/25(日) NY:AN:NY.AN
>>156
それは本当にいらんな。
ただ1配列を回す時に大きなデータ領域が必要な場合あるし、
関数オブジェクト全部は消えないかも。

158 :デフォルトの名無しさん:2013/08/25(日) NY:AN:NY.AN
ラムダ式はなにがありがたいんだべ
その関数を一時的に使うことが明記できるところ?

159 :デフォルトの名無しさん:2013/08/25(日) NY:AN:NY.AN
>>156
いるでしょ
less とか plus が使えるところで、
ラムダ使う必要ないし、
ファンクタに状態を持たせる必要がある場合、
ラムダは使えないと思うの

160 :デフォルトの名無しさん:2013/08/25(日) NY:AN:NY.AN
忘れてた。functionalはlambda受け取るときに使うのか。
bindその他はいらん気がする。

161 :デフォルトの名無しさん:2013/08/25(日) NY:AN:NY.AN
>>159
>ファンクタに状態を持たせる必要がある場合
それもキャプチャできるから解決してしまう

162 :デフォルトの名無しさん:2013/08/25(日) NY:AN:NY.AN
>>158
局所性
→処理が必要な場所に書ける

簡潔さ
→ファンクタでありながら、
クラスの冗長なコーディングをする必要がない

163 :デフォルトの名無しさん:2013/08/25(日) NY:AN:NY.AN
>>162
局所性は理解した
ファンクタ・・・は勉強します

164 :デフォルトの名無しさん:2013/08/25(日) NY:AN:NY.AN
>>161
あ、確かに
キャプチャで解決するね
考えてみたら、引数でもいいわけだし

ただ、ここからは思想的な話になっちゃうんだけど、
キャプチャしまくりのラムダとか作るぐらいなら、
ファンクタ作った方がまとまる気がする…

165 :164:2013/08/25(日) NY:AN:NY.AN
あ、引数はムリか

166 :デフォルトの名無しさん:2013/08/25(日) NY:AN:NY.AN
>>164
それは同意する
影響範囲が広い処理はラムダは適さない
ただそこまで大きいなら関数オブジェクトでなく
順当に処理クラスを作ってしまった方が良いかなとも

167 :164:2013/08/25(日) NY:AN:NY.AN
>>166
だね
そんな多量の状態を必要とする処理は、
何か間違ってるよね

168 :デフォルトの名無しさん:2013/08/25(日) NY:AN:NY.AN
多量かどうかって問題じゃない
文面的に飛ぶことを強制しなくなった、それだけだ

169 :デフォルトの名無しさん:2013/08/25(日) NY:AN:NY.AN
ふうん、そういうことか

170 :デフォルトの名無しさん:2013/08/25(日) NY:AN:NY.AN
>>160
bindはラムダに対しても有効で、
引数の順序を変えたり、別の引数を与えたりできる便利さ

171 :デフォルトの名無しさん:2013/08/25(日) NY:AN:NY.AN
ラムダ式で得られる局所性イイよね。

172 :デフォルトの名無しさん:2013/08/25(日) NY:AN:NY.AN
>>170
ラムダの引数順変えるのにbindなんか使ってたら、本末転倒もいいところだろ

173 :デフォルトの名無しさん:2013/08/25(日) NY:AN:NY.AN
だが、C++屋は本末転倒が大好き

174 :デフォルトの名無しさん:2013/08/25(日) NY:AN:NY.AN
Haskellでもflipは可読性的に邪道とされてる

175 :デフォルトの名無しさん:2013/08/25(日) NY:AN:NY.AN
>>171
ああ^〜たまらないぜ

176 :デフォルトの名無しさん:2013/08/25(日) NY:AN:NY.AN
mt19937のランダムシードってvector使って複数個入れられるけどなんか意味あるの?

177 :デフォルトの名無しさん:2013/08/26(月) NY:AN:NY.AN
a[10]='b;
char i='c';
while(a[10] != i)'{
a[10]のアドレスを標準出力;
a[10]のアドレスをdに標準出力をみて標準入力;
d[0]=30;
i=ランダムな文字;
}
というコードってa[10]の中身が変わっているかコンパイラーは知る由もありませんよね。
しからば
a[10]='b;
const char x=a[10];
char i='c';
while(c!=i)'{
a[10]のアドレスを標準出力
a[10]のアドレスをdに標準入力
d[0]=30
i=ランダムな文字
}
という風に最適化されるんですよね。

178 :デフォルトの名無しさん:2013/08/26(月) NY:AN:NY.AN
a[10]='b;
char i='c';
while(a[10] != i)'{
a[10]のアドレスを標準出力;
a[10]のアドレスをdに標準出力をみて標準入力;
d[0]=30;
i=ランダムな文字;
}
というコードってa[10]の中身が変わっているかコンパイラーは知る由もありませんよね。
しからば
a[10]='b;
const char x=a[10];
char i='c';
while(x!=i)'{
a[10]のアドレスを標準出力
a[10]のアドレスをdに標準入力
d[0]=30
i=ランダムな文字
}
という風に最適化されるんですよね。

179 :デフォルトの名無しさん:2013/08/26(月) NY:AN:NY.AN
つーか、
const char x = 'b';
だろうよ。
それにしても酷い日本語だな。

180 :デフォルトの名無しさん:2013/08/26(月) NY:AN:NY.AN
糞コード書くな

181 :デフォルトの名無しさん:2013/08/26(月) NY:AN:NY.AN
stringstreamを使ってstring文字列に、文字列と数値を合わせて代入したいんですけど

string Name;

int Number=111;

stringstream sstream;
sstream << "aho" << Number;
Name = sstream.str();
ってやればいいんですか?

C#とかだとToString()で一発なんですけど

182 :デフォルトの名無しさん:2013/08/26(月) NY:AN:NY.AN
そうだよ
それをtoStringとしてラップしておけばいい

183 :デフォルトの名無しさん:2013/08/26(月) NY:AN:NY.AN
ゆとり言語乙

184 :デフォルトの名無しさん:2013/08/26(月) NY:AN:NY.AN
>>181
std::string Name = "aho" + std::to_string(Number);

185 :デフォルトの名無しさん:2013/08/26(月) NY:AN:NY.AN
そしてお馬鹿さんにはCstring::Format()が。

186 :デフォルトの名無しさん:2013/08/26(月) NY:AN:NY.AN
>>181
to_string()があるよ

187 :デフォルトの名無しさん:2013/08/26(月) NY:AN:NY.AN
もうそろそろ原理主義を脱して
文字列&ストリームは(言語内スクリプト言語みたいな)別言語にすべきなんだよね

188 :デフォルトの名無しさん:2013/08/26(月) NY:AN:NY.AN
>>185
実装依存ネタになるが、mfc42.dllはずっとバンドルされてきてるので、
ニーズと条件がそろえば十分使える

使えると言えば、msvbvm60.dllが完全にC++から呼べればこれも役に立ちそうだが
amd64がたしかないんだよな

189 :デフォルトの名無しさん:2013/08/27(火) NY:AN:NY.AN
>>188
お馬鹿さん発見w

190 :デフォルトの名無しさん:2013/08/27(火) NY:AN:NY.AN
std::to_string() とか boost::lexical_cast() とか、基数を変えられなくて困る。

>>185
おう、CString::Format() を常用しているお馬鹿さんだともw

191 :デフォルトの名無しさん:2013/08/27(火) NY:AN:NY.AN
vsprintf使った数行の関数作ってる俺には死角はない

192 :デフォルトの名無しさん:2013/08/27(火) NY:AN:NY.AN
>>191
バッファ長どうすんだそれ。

193 :デフォルトの名無しさん:2013/08/27(火) NY:AN:NY.AN
>>192
ごめん実際に使ってるのはvsprintf_s
一時バッファ長は適当に大きめ
どうせフォーマティングしたくなる場面で結果がそんなに長くなるケースはないから

194 :デフォルトの名無しさん:2013/08/27(火) NY:AN:NY.AN
>>192
VC++なら_scprintfとかglibcならvasprintfとか

195 :デフォルトの名無しさん:2013/08/27(火) NY:AN:NY.AN
プゲラ

196 :デフォルトの名無しさん:2013/08/27(火) NY:AN:NY.AN
フォーマットが固定なら簡単なんだが・・・

197 :デフォルトの名無しさん:2013/08/27(火) NY:AN:NY.AN
シェルスクリプトだけで掲示板CGIを作ろうぜ!

198 :デフォルトの名無しさん:2013/08/28(水) NY:AN:NY.AN
>>192
open_memstream と vfprintf とか

199 :デフォルトの名無しさん:2013/08/28(水) NY:AN:NY.AN
シェルスクリプトってコマンドラインのやつでしょ?
CGIなんか作れるわけないじゃん

200 :デフォルトの名無しさん:2013/08/28(水) NY:AN:NY.AN
これを進化させてくれ

新月 - P2P匿名掲示板その2
http://anago.2ch.net/test/read.cgi/software/1263169440/

201 :デフォルトの名無しさん:2013/08/28(水) NY:AN:NY.AN
>>199
なんで作れないと思ったんだ?
CGIってコマンドラインのパイプの拡張だぞ。

202 :デフォルトの名無しさん:2013/08/28(水) NY:AN:NY.AN
>>201
何を言ってるんだPerlとかPHPとかじゃないとCGIは作れないよ。

203 :デフォルトの名無しさん:2013/08/28(水) NY:AN:NY.AN
>>202
??
なんでそんな意味のない嘘をつくんだ?

204 :デフォルトの名無しさん:2013/08/28(水) NY:AN:NY.AN
あとPHPはfcgiかmod_phpだからcgiとは違うぞ。

205 :デフォルトの名無しさん:2013/08/28(水) NY:AN:NY.AN
>>193
人それを死角と呼ぶ

>>199>>202
まぁ釣りだろうけど、httpdの動くマシン上で実行ファイルとして実行できるファイルを起動して環境変数と標準入力にアクセス情報やPOST内容を渡し、標準出力をレスポンスとして返すが古典的なCGI
サーバ上で実行ファイルとして動けばよいから、シェルスクリプトだろうがネイティブ実行ファイルだろうがシェバング使った各種スクリプトだろうが何でも実行できる
が、セキュリティだの高速化だの省リソースだのでhttpd上で実行するモジュールだの何だのが増加したりhttpd自体が見直されたりして近年ではこの限りではない

LaFoneraの設定画面は確かシェルスクリプトだったな
エスケープ漏れがあってコマンドインジェクションするとsshdが立ち上がってシェルが使えたっていうww

206 :デフォルトの名無しさん:2013/08/28(水) NY:AN:NY.AN
彼はCGIという仕組みを作る・・つまりOSという観点で言ったのかもしれない。
そんなわけあるか。

207 :デフォルトの名無しさん:2013/08/28(水) NY:AN:NY.AN
>コマンドインジェクションするとsshdが立ち上がってシェルが使えた
ワラタwwwww

208 :デフォルトの名無しさん:2013/08/28(水) NY:AN:NY.AN
>>204
php-cgi

209 :デフォルトの名無しさん:2013/08/28(水) NY:AN:NY.AN
PHPはCGIとしても動作させられるだろハゲ

210 :デフォルトの名無しさん:2013/08/28(水) NY:AN:NY.AN
わからんなりに、ABIを覗きこんでみるのが、C/C++使いってもんじゃなかろうか
機械があったら一度はメンテナンスドアを開けてみる。くらいのもんで
httpd - CGI のことな

211 :デフォルトの名無しさん:2013/08/28(水) NY:AN:NY.AN
>>209
そんなのわかっとるわボケ。
動作させられるのと実際使われてるかどうかの違いも区別つかんのか。

212 :デフォルトの名無しさん:2013/08/28(水) NY:AN:NY.AN
>>201に対する>>204をそのように解釈するのはありえない

213 :デフォルトの名無しさん:2013/08/28(水) NY:AN:NY.AN
>>202

214 :デフォルトの名無しさん:2013/08/28(水) NY:AN:NY.AN
結局シェルスクリプトでCGIは作れるの?

215 :デフォルトの名無しさん:2013/08/28(水) NY:AN:NY.AN
>>214
作れる

216 :デフォルトの名無しさん:2013/08/28(水) NY:AN:NY.AN
>>215
そこまで言うなら作ってみろや

217 :デフォルトの名無しさん:2013/08/28(水) NY:AN:NY.AN
>>216
馬鹿

218 :デフォルトの名無しさん:2013/08/28(水) NY:AN:NY.AN
でも結局シェルスクリプトにはライブラリとかの概念がないから
データベースとかも使えないし、その他ライブラリ使う系の作業ができない。

219 :デフォルトの名無しさん:2013/08/28(水) NY:AN:NY.AN
VC++6で作成したDLLが持っている画面にActivXを張り付けると、DoModalで失敗してしまいます。解決策お分かりの方、いらっしゃいましたら助けて下さい!

220 :デフォルトの名無しさん:2013/08/28(水) NY:AN:NY.AN
シェルスクリプトCGIって速度的にはどうなの?

221 :デフォルトの名無しさん:2013/08/28(水) NY:AN:NY.AN
>>219
CoInitialize

222 :デフォルトの名無しさん:2013/08/28(水) NY:AN:NY.AN
もうシェルスクリプトの話やめよう

223 :デフォルトの名無しさん:2013/08/28(水) NY:AN:NY.AN
>>216
頭わりいなこいつは。

224 :デフォルトの名無しさん:2013/08/28(水) NY:AN:NY.AN
実行可能ファイルなら何でもCGIになるんじゃないの?

225 :デフォルトの名無しさん:2013/08/28(水) NY:AN:NY.AN
>>220
シェルスクリプト自体速度求めるものじゃないからなぁ…
何をするにもプロセス立ち上げてパイプ処理だし、普通に書くと絶望的に遅くなるんじゃないか?
俺はCGIじゃないけど、簡易MMLパーサをシェルスクリプトで書こうとしたものの重くて途中で投げたし。

ルータのUI作る程度ならLaFoneraで実例があった筈だが、マトモなサービス書くのは辛い気がする。

226 :デフォルトの名無しさん:2013/08/28(水) NY:AN:NY.AN
 \      /         ____     , -‐……‐--. . . 、          \ | | /
\           /     /. : : : : : : : :ヽ-‐.: :_;. --- .._: : : : : : : :\       \      /
_  や  争  _   /, -‐==ミ: : : : _,ィニ-‐……ー-: 、`ヽ、: : : : ヽ、      _   や   _
_  め  う   _     . .:´: : : : : : : ≠:7: : : : : : : : : : : : :ヽ、 ヽ| : i : : :,     _   め   _
_  て  の   _   /.: : : : -‐: :7´: : /:,ハ : : : :ヽ : : : ゝ-- :\ | : :! : : : ,   _   て   _
_  :  は  _ /, -‐/.: : : : :i : : /ィ:爪: : :\ :\ : : :\: : :`ト : !: : : :′   _   :    _
    :        〃  /. : : : : : : |.:イ :ハ:| \: .、\: : xィ¬ト、: :| : : ! : : : : :,         :
/          \   /.: :/.: : : : /l : |/Гト、       / |_,ノ0:::ヽ : : :i : : : : :′ /        \
 /  |  |  \    | .:/.:/. : : :i: i : | |ノ0:::ト        |: :∩::::::ト: : : !: : : : : : :,  / | | \
             ∨i: |: : : : |: :ヽ| |::∩::|         !.::∪::::::| |: : :i : : : : : : ′            ,ィ /〉
               |: |: : i : :', : |  |::∪::|         !: : : : : :||: : i : : : : : : : :,          / レ厶イ
                ヽハ: : :、: :ヽ|  l : : : |    ,   └――┘ ! : : i : : : : : : : ′        /   ⊂ニ、
                い、: :\/   ̄ ̄                 ', : : i : : : : : : : : ,     _, -‐'    ⊂ニ,´
    r 、  _          ヽ: :〈        <    ̄}         |: : : ! : : : : : : : :′,.-‐T   _,. -‐'´ ̄
    くヾ; U|           | : \                   /| : : :i : : : : :_, -‐'    |  /
   r―'   ヽ、             | : :

227 :デフォルトの名無しさん:2013/08/29(木) NY:AN:NY.AN
#!/bin/sh
echo "Content-Type:text/html\n\n"
echo "GReeeeeeeeeN"

これで一応CGIとして動作するだろう。

228 :デフォルトの名無しさん:2013/08/29(木) NY:AN:NY.AN
echo "\n" できるのか?

229 :デフォルトの名無しさん:2013/08/29(木) NY:AN:NY.AN
echoは自動で改行入るんじゃなかったか?

230 :デフォルトの名無しさん:2013/08/29(木) NY:AN:NY.AN
#!/bin/sh
echo "Content-Type: text/plain"
echo ""
echo "GReeeeeeeeeN"

231 :デフォルトの名無しさん:2013/08/29(木) NY:AN:NY.AN
>>227-230
それだと\r抜けるんじゃないか?
案外多くのブラウザが\rのない改行も受け入れるけど、たまにトラブる。

それと、シェルの種類と拡張によっては\nとか使える拡張が有ったと思う。

232 :デフォルトの名無しさん:2013/08/29(木) NY:AN:NY.AN
CGIで何作る話だっけ、掲示板だっけ?
掲示板の書き込みデータをbbs.txtに保存するとしたら表示はこんな感じか?

#!/bin/sh
echo "Content-Type: text/plain"
echo ""
cat bbs.txt

233 :デフォルトの名無しさん:2013/08/29(木) NY:AN:NY.AN
スレタイ百回

234 :デフォルトの名無しさん:2013/08/29(木) NY:AN:NY.AN
>>232
ページ分けとかしない前提?

235 :デフォルトの名無しさん:2013/08/29(木) NY:AN:NY.AN
それ以前に投稿フォームがない

236 :デフォルトの名無しさん:2013/08/29(木) NY:AN:NY.AN
>>234-235
投稿CGIで容量みて静的HTML化して過去ログにして
投稿CGIでbbs.txtに投稿フォームやフッタも入れてIEの自動MIME上書きに期待する…
…ってだからスレチだし\r抜けてるってば!

しかし199が人気過ぎて197のスレチに気付いてなかったorz

237 :デフォルトの名無しさん:2013/08/29(木) NY:AN:NY.AN
■header.txt
<!DOCTYPE〜<BODY>まで

■form.txt
投稿フォーム<FORM>〜</FORM>

■bbs.txt
投稿された内容(性的HTMLに加工済み)

■footer.txt
</BODY></HTML>

にしてcatでこの4つを出力のほうがよくね?

238 :デフォルトの名無しさん:2013/08/29(木) NY:AN:NY.AN
それで連想して思い出した

ドザから、*NIX系のソースも読むドザに進化せんとするとき、
いかさま ぽんぽんプロセスを作成するんだなと思って違和感もりもりだった
いまやだいぶ慣れたんだが、*NIX系は、どんどんプロセスを作成して
つないでいくのに最適化されてる。って考えるようになった。
これは勘所としては& *NIXの基礎常識として正しい?

239 :デフォルトの名無しさん:2013/08/29(木) NY:AN:NY.AN
まぁ、いいんじゃね?
スレッド自体、事実上プロセスなんだし。
シェルスクリプトの構文の一部に見える、"["だってコマンド呼び出しだし。
果ては"seq"だとか"true"なんてコマンドまであるしね。

240 :デフォルトの名無しさん:2013/08/29(木) NY:AN:NY.AN
おしまい!おしまい!

241 :デフォルトの名無しさん:2013/08/29(木) NY:AN:NY.AN
>>239
全ての内部コマンドはexec可能であることっていう馬鹿な規定がPOSIXにあるせいや

242 :デフォルトの名無しさん:2013/08/29(木) NY:AN:NY.AN
Windowsだってポンポンプロセス作るだろ
タスクマネージャ見てみろ

243 :デフォルトの名無しさん:2013/08/29(木) NY:AN:NY.AN
>>242
あれ、あれみたいなもん?今流行のビッグダディ。
ぽんぽんガキ作ってさ。

244 :デフォルトの名無しさん:2013/08/29(木) NY:AN:NY.AN
spawn

245 :デフォルトの名無しさん:2013/08/29(木) NY:AN:NY.AN
そして、子供は親ごところせ、killallだ。
という伝統的なギャグの方向へ

246 :デフォルトの名無しさん:2013/08/29(木) NY:AN:NY.AN
シェルって\r出力できないの?

247 :デフォルトの名無しさん:2013/08/29(木) NY:AN:NY.AN
>>246
echoで何でも出力できるはずなんだけどね、なんだろうねこの流れ。
とりあえずsh、bash、zshで試して確認した。

248 :デフォルトの名無しさん:2013/08/29(木) NY:AN:NY.AN
それと今はtest([])もechoもシェルの組み込みなんだけどな。
busyboxでも同じだし。

249 :デフォルトの名無しさん:2013/08/29(木) NY:AN:NY.AN
制御コードを埋め込めばできるでしょ

250 :デフォルトの名無しさん:2013/08/29(木) NY:AN:NY.AN
今回の掲示板CGIに限定した話なら
HTTPレスポンスヘッダは決め打ちでいいから
\rを使った状態のヘッダをファイルに持たせておいてcatで出せばよい

251 :デフォルトの名無しさん:2013/08/29(木) NY:AN:NY.AN
だからそのまま出力できるって・・。

252 :デフォルトの名無しさん:2013/08/29(木) NY:AN:NY.AN
>>238
だってforkで増やしたプロセスがスレッド代わりなんですもの
pthreadとかもあるにせよ、それ前提に設計してるのは当然・・・具体的な実装は知らんが
>>246>>251
だせるけど、>>227-230,232が悉く\nだけで済ませてたって話だろ
DATで見たら書いてあるのかも知れんが、見えないし

253 :デフォルトの名無しさん:2013/08/29(木) NY:AN:NY.AN
だからスレタイ百回読んでみろって…

254 :デフォルトの名無しさん:2013/08/29(木) NY:AN:NY.AN
>>251
サンプルplz

255 :デフォルトの名無しさん:2013/08/29(木) NY:AN:NY.AN
>>254
echo -ne "\r\n"

もしかして、できないって言ってる奴がしつこく荒らしてる?

256 :デフォルトの名無しさん:2013/08/30(金) NY:AN:NY.AN
お知恵をお貸しください。2Dアクションゲームにて、Y軸テーブルジャンプを実装しようとしています。
それはジャンプボタン押しっぱなしで高さを調整出来るジャンプなんですが

ジャンプボタンを押しっぱなしで地面に着地するとまたジャンプするのを防ぎたいので、
「ジャンプボタンは押しっぱなしでも着地後暴発させない処理」も入れたいのです。
もうおわかりと思いますが、
その処理と、「ジャンプボタン長押しでジャンプの高さを調整出来る処理」との
共存が実現出来ません。。一方を取れば、一方が殺されてます。
どうすればいいと思いますか?
悩み続けて、一日経ちます。。お知恵を貸し下さい、お願いします。

257 :デフォルトの名無しさん:2013/08/30(金) NY:AN:NY.AN
え、なんか色んな意味で頭悪そう(´・ω・`)

258 :デフォルトの名無しさん:2013/08/30(金) NY:AN:NY.AN
ジャンプボタンを押したときに
ジャンプしたというフラグを立てて
ジャンプボタンを離したときに、上のフラグを下す
上のフラグが立っているときはジャンプボタンを押してもジャンプさせない
こういう話はこのスレよりゲーム製作技術板の方がいいんじゃないか

259 :デフォルトの名無しさん:2013/08/30(金) NY:AN:NY.AN
いや、もちろんそう思い付きましたが

ジャンプボタンを離した時ってのが
if文で作れません。
if(!ジャンプボタン)
が機能しません。


>>257
賢い回答してから言うべきじゃないの?

260 :デフォルトの名無しさん:2013/08/30(金) NY:AN:NY.AN
>>259
あなたがどうやってボタンのon/offの状態を得ているのかがわからないから答えようがない
あと、煽るな
もう誰も答えてくれないからよそ行った方がいい

261 :デフォルトの名無しさん:2013/08/30(金) NY:AN:NY.AN
一つ前のフレームと現在のフレームでそれぞれボタンを押しているか見ればいい

262 :デフォルトの名無しさん:2013/08/30(金) NY:AN:NY.AN
>>259
ぶっちゃけ自分が悩んでるから相手も悩んでると思ってる辺頭が悪い
普通に設計すればまず悩むはずのない問題
機能しません、と書けば誰かが答えてくれると思ってる辺頭が悪い
そして貴方の頭が悪いのは事実なのだから、頭が悪いという回答は賢い回答である

263 :デフォルトの名無しさん:2013/08/30(金) NY:AN:NY.AN
そもそもこのスレで聞いてる時点で

264 :デフォルトの名無しさん:2013/08/30(金) NY:AN:NY.AN
>>262かその親が早く死にますように
病気になるなり、事故に合うなりして、
近いうちに死にますように。

265 :デフォルトの名無しさん:2013/08/30(金) NY:AN:NY.AN
教えてやるから>>259のジャンプボタンを離した状態が取得できない点について詳しく教えろよ
キーの取得は大まかにはonKeyUpみたいなイベントハンドラで行う方法と、
現在特定のキーが押されているかどうかをチェックするAPIを使用する方法がある
おそらくお前の状況では後者だろうがその場合は>>261の方法で実装できる
この時点では情報不足でそこまでしか指摘できん。簡略化したソースをうpするとよりいいぞ

266 :デフォルトの名無しさん:2013/08/30(金) NY:AN:NY.AN
>>259
ボタン判定って実はプレスとダウンとアップの三つがある。
ダウンはボタンを押した最初の一回の判定(大抵はボタンが押されたフレーム)でしか真にならず、
アップはボタンを離した最初の一回の判定でしか真にならず、プレスはボタンが押されている間常時真になる。
「現在のキー状態一覧を退避→キー状態取得→退避と比較してダウンとアップの情報の生成」
を各フレームないし入力処理の直前で毎回行い、ゲームとしての入力はそれを使うってのが定番かな。

頭悪そうってのは、プレスとダウンの違いを洞察できてないあたりのことだろう。
キー入力を直接判定に使うのではなく、加工(時系列での変化を判定)して使うという発想が出来ないのは頭が硬いと言われても仕方が無い。
与えられた定型文の行を組み合わせるのではなく、その文の意味を理解し、値や機構の応用を考えよう。

267 :デフォルトの名無しさん:2013/08/30(金) NY:AN:NY.AN
毎回ButtonUp見て着地してたら飛んでますフラグ戻せばいいじゃん。

268 :デフォルトの名無しさん:2013/08/30(金) NY:AN:NY.AN
優しいお前らが大好きです

269 :デフォルトの名無しさん:2013/08/30(金) NY:AN:NY.AN
キチガイ晒しage

270 :デフォルトの名無しさん:2013/08/30(金) NY:AN:NY.AN
サーバーにApache使うとして、シェルスクリプトから投稿された内容を取得するのはどうする気だ

271 :デフォルトの名無しさん:2013/08/30(金) NY:AN:NY.AN
だからいい加減スレチな話は止めろと言うのに
CGIの挙動考えれば標準入力を読むコマンド叩くだけで済むってわかるだろあほう

272 :デフォルトの名無しさん:2013/08/30(金) NY:AN:NY.AN
>>270
シェルなんだから環境変数そのままだろ粘着荒らし

273 :デフォルトの名無しさん:2013/08/30(金) NY:AN:NY.AN
>>264
そして最後、炎上勉強法を演出してやった俺に気づけない君は本当に頭が悪いな

274 :デフォルトの名無しさん:2013/08/30(金) NY:AN:NY.AN
stdin/stdoutも使えないアホが一匹粘着しているのか

275 :デフォルトの名無しさん:2013/08/30(金) NY:AN:NY.AN
>>274
どうやら、一部の環境では標準入出力がどこにも結びついてないらしいよ。
その環境でしか仕事をしていないと、標準入出力ってものを忘れっちまうんじゃない?

276 :デフォルトの名無しさん:2013/08/30(金) NY:AN:NY.AN
それ以前にスレチだし

277 :デフォルトの名無しさん:2013/08/30(金) NY:AN:NY.AN
普通に引数として来るんだろ

278 :デフォルトの名無しさん:2013/08/30(金) NY:AN:NY.AN
CGIなら基本的にヘッダやQueryStringは環境変数でPOSTはstdin。
どっちも合ってる。

279 :デフォルトの名無しさん:2013/08/30(金) NY:AN:NY.AN
↑&↑↑阿保

280 :デフォルトの名無しさん:2013/08/30(金) NY:AN:NY.AN
その基本的じゃないケースがあるとでも言いたいのか?

281 :デフォルトの名無しさん:2013/08/30(金) NY:AN:NY.AN
>>280
そうなんじゃないの?
Apacheではどうなんだなんて言っちゃうぐらいだし。

282 :デフォルトの名無しさん:2013/08/30(金) NY:AN:NY.AN
char型のローカル変数のアドレスって
4バイトアラインされてるとは限らないんですか?

283 :デフォルトの名無しさん:2013/08/30(金) NY:AN:NY.AN
>>282
限らないどころかx86_64なら8バイトだろう

284 :デフォルトの名無しさん:2013/08/30(金) NY:AN:NY.AN
しまった、間違えた。
8じゃなくて16バイトだ。

285 :デフォルトの名無しさん:2013/08/30(金) NY:AN:NY.AN
そんなにあんの?

286 :デフォルトの名無しさん:2013/08/30(金) NY:AN:NY.AN
アライメント量は規定されていないからねぇ。

287 :デフォルトの名無しさん:2013/08/30(金) NY:AN:NY.AN
やっぱ、C++が一番どきわくするな。

288 :デフォルトの名無しさん:2013/08/30(金) NY:AN:NY.AN
#pragma pack

289 :デフォルトの名無しさん:2013/08/30(金) NY:AN:NY.AN
複数のクラスから同じenumを使うときってどう書いたらスマートですかね?
今はAとBというクラスがあり、Bにenum TEST { t1, t2 };のように定義してあります。
なので、AからTESTを使うときはB::TESTのように書いています

290 :デフォルトの名無しさん:2013/08/30(金) NY:AN:NY.AN
enumを持つクラスをAとBに継承させればいいんじゃね?
同じのを使うなら似たクラスだろうし

291 :デフォルトの名無しさん:2013/08/30(金) NY:AN:NY.AN
外部に書いて使えばいいじゃん
バカなの?

292 :デフォルトの名無しさん:2013/08/30(金) NY:AN:NY.AN
>>291
AとBを同じnamespaceに定義して、そこにenumも定義したらいいですかね?

293 :デフォルトの名無しさん:2013/08/30(金) NY:AN:NY.AN
このヒトと一緒に悩め
http://d.hatena.ne.jp/taiyakisun/20091227/1261865297

294 :デフォルトの名無しさん:2013/08/30(金) NY:AN:NY.AN
クラスの外部に置いてenum class使えば解決

295 :デフォルトの名無しさん:2013/08/30(金) NY:AN:NY.AN
enumだけ書いたクラスを作ってそれをprivateにしておき、公開したいクラスを
friendに指定するとか

296 :デフォルトの名無しさん:2013/08/30(金) NY:AN:NY.AN
マクロで十分だよ。
原理主義者供はほんとドウシヨウモナイクソだな

297 :デフォルトの名無しさん:2013/08/30(金) NY:AN:NY.AN
マクロだと値が正しいか確認できないじゃん

298 :デフォルトの名無しさん:2013/08/30(金) NY:AN:NY.AN
char Src[ 1024 ];

・・・ // Srcに値を格納する

string str;

このstrにSrc配列の先頭から途中(非NULL文字)までの値を格納したいのですが、
別のバッファに一旦コピーせずに、
Srcからstrに直接コピーするエレガントな書き方はないでしょうか?
なお、Src配列の内容は非破壊という条件です。

299 :デフォルトの名無しさん:2013/08/30(金) NY:AN:NY.AN
値の格納の仕方を示さないと何も言えんだろ(´・ω・`)

300 :デフォルトの名無しさん:2013/08/30(金) NY:AN:NY.AN
>>294
こんなものがあったとは
ありがとうございます

301 :デフォルトの名無しさん:2013/08/30(金) NY:AN:NY.AN
string str(Src, 途中までの文字数);

302 :デフォルトの名無しさん:2013/08/31(土) NY:AN:NY.AN
enum class はC++11からか

303 :298:2013/08/31(土) NY:AN:NY.AN
>>299
失礼しました。
「Srcに値を格納する」の部分でしょうか?
実際はメモリマップドファイルのMapViewOfFileの戻り値をchar*にキャストしたものになります。

>>301
ありがとうございます!
素晴らしくエレガントです!
>>298で示した「string str」は実際は関数の引数として渡されるので、

void Func( string* pstr, char* pSrc, UINT CpySz )
{
 *pstr = string( pSrc, CpySz );
}

という感じでできたのですが、
この場合、右辺値のstring( Src, CpySz )で一度stringオブジェクトが生成され、
続いて左辺値のpstrにコピーというふうに、2度コピーが行われてしまうのでしょうか?
それとも右辺値参照になって、pstrへはムーブで済ましてくれるのでしょうか?

304 :デフォルトの名無しさん:2013/08/31(土) NY:AN:NY.AN
>>303
一時オブジェクトを作ってるのは一目瞭然だし=によるコピーなのも一目瞭然だろ。あとはコンパイラの最適化次第。
stringの値の設定は応用が聞くってのは示してもらってるんだし、他のメソッドを見れば何が使えそうかは判るだろ。
basic_string& assign(const E *s, size_type n);
basic_string& assign(const_iterator first, const_iterator last);
insertやreplaceなんかでも良い。

305 :デフォルトの名無しさん:2013/08/31(土) NY:AN:NY.AN
ちょっと調べればわかることを何故調べようともしないで聞くのか
回答者を自動検索機くらいにしか思ってないんだろうな

306 :298:2013/08/31(土) NY:AN:NY.AN
>>304-305
ありがとうございます!

http://www.cppll.jp/cppreference/cppstring.html
ほんとですね・・・。
失礼しました。

307 :デフォルトの名無しさん:2013/08/31(土) NY:AN:NY.AN
>>303
swapしてもええんやで

void Func( string* pstr, char* pSrc, UINT CpySz )
{
  std::swap(std::string(pSrc, CpySz), *pstr);
}

308 :デフォルトの名無しさん:2013/08/31(土) NY:AN:NY.AN
どうせmoveされんでしょ

309 :298:2013/08/31(土) NY:AN:NY.AN
>>307
ほんまや!
おおきに!

310 :デフォルトの名無しさん:2013/08/31(土) NY:AN:NY.AN
俺ならmoveが使える場合、
戻値でstringインスタンスを返すな。

まあ、この例でそれやるとおかしな事になるから、
敢えて out 引数を使う前提で組むなら、
俺は↓だな。

void Func( string* pstr, char* pSrc, UINT CpySz )
{
  pstr->asign(pSrc, CpySz);
}

311 :デフォルトの名無しさん:2013/08/31(土) NY:AN:NY.AN
×asign
◯assign

312 :デフォルトの名無しさん:2013/08/31(土) NY:AN:NY.AN
実際のところ、moveをサポートしてないコンパイラでも、
関数の戻り値をいちいちコピーするような無駄はしないよ。

ここすごく勉強になる。英語だけど。
http://cpp-next.com/archive/2009/08/want-speed-pass-by-value/

313 :312:2013/08/31(土) NY:AN:NY.AN
いや「ムーブをサポートしていない」という言い方は曖昧だな。
「言語機能としてのムーブはサポートしていないが、最適化手法としての
ムーブはサポートしているコンパイラ」とでも言うべきか。

314 :デフォルトの名無しさん:2013/08/31(土) NY:AN:NY.AN
mt19937を複数のクラス内で使いたいんだがどう使えばば良いんだろ?
何スレか前に http://ideone.com/6QYWl1 があったけど、
これじゃクラス毎にオブジェクト生成しないといけないよな

315 :デフォルトの名無しさん:2013/08/31(土) NY:AN:NY.AN
>>314
Flyweight

316 :デフォルトの名無しさん:2013/08/31(土) NY:AN:NY.AN
>>314
>mt19937を複数のクラス内で使いたい
使えばいいんじゃないの?
コンストラクタで渡すかグローバルにするかして

317 :デフォルトの名無しさん:2013/08/31(土) NY:AN:NY.AN
>>315
なるほどこういうやり方があるのか。dクス

318 :デフォルトの名無しさん:2013/09/02(月) 20:10:36.67
 
                  ∧_∧
                ( ´∀`)   あげ?
..\             (/u  ノ
  \           〈/フ'フ
    \         ∠∠/
     \
\     \    彡
 .\     .\
   .\_/| ̄ ̄ ̄ ̄ ̄|
        . |       .|

319 :デフォルトの名無しさん:2013/09/02(月) 21:33:38.82
>>318
かわいいw

320 :デフォルトの名無しさん:2013/09/03(火) 09:30:42.01
mingwで使うboostのインストール方法で
http://www.boost.org/doc/libs/1_54_0/more/getting_started/windows.html#or-build-binaries-from-source
に書いてあるのと
http://d.hatena.ne.jp/wordi/20111129/p1
に書いてあるのとやり方が全然ちがうんですけど
何が違うんですか?
どれが正しいのか分らなくてインストールできません。

321 :デフォルトの名無しさん:2013/09/03(火) 09:48:55.19
>>320
1. バージョンが違う (上:1.54, 下:1.48)
2. ツールが違う (上:b2, 下:bjam)
3. ビルドオプションが違う (下:pythonなし、mpi(並列)なし、スタティックリンク)

最新版がいいなら上の公式でやれ

322 :デフォルトの名無しさん:2013/09/03(火) 09:51:12.66
>>321
ありがとうございます。
参考になりました。

323 :デフォルトの名無しさん:2013/09/03(火) 13:52:05.39
ちなみにb2とbjamは全く同じ

324 :デフォルトの名無しさん:2013/09/04(水) 20:18:46.28
SQLite3のWindowsバイナリDLLでマルチスレッド書き込みしたら、エラーでた。マルチスレッドムリだったのか。



実際に試した感触では、どうやら、トランザクションが開始されるとジャーナルファイルが作成され、
コミットするとジャーナルファイルがデータベースファイルにマージされたあと削除され、
このジャーナルが存在する期間は、別のスレッドはブロックされてしまうようなのだ。
http://d.hatena.ne.jp/seraphy/20060927


SQLITE_BUSY
この戻り値は、別のプログラムやスレッドがデータベースをロックしていることを示します。
SQLiteでは同時に2つ以上のスレッドから同じデータベースを読み取ることはできますが、書き込み可能な状態でデータベースを開けるのは1つだけです。 SQLiteがデータベースを開くと、ロックされます。
http://tria.s31.xrea.com/sqlite/c_interface.html


open_v2に設定できるモード
SQLITE_OPEN_NOMUTEX - マルチスレッドモード
SQLITE_OPEN_SHAREDCACHE - シェアードキャッシュを利用
SQLITE_OPEN_PRIVATECACHE - プライベートキャッシュを利用
http://idocsq.net/page/507


SQLiteでは複数スレッドからのDBへの同時アクセスはNGのようで、即関数リターンしてしまうようです。
うまいこと排他して実行してくれないもんかな?と思ったら、それはそれで可能なようです。
http://engineermsdiary.blogspot.jp/2012/11/sqlitesqlitebusy.html

325 :デフォルトの名無しさん:2013/09/04(水) 20:21:51.90
sqlite3_MT.dllという、sqlite3のマルチスレッド可能なラッパーライブラリをいまから開発することにした。

326 :デフォルトの名無しさん:2013/09/04(水) 20:29:09.50
規模考えろ無茶すぎる
素直にプログラム側で同期した方がいい

327 :デフォルトの名無しさん:2013/09/04(水) 20:55:47.24
すべての関数でマルチスレッド可能なラッパー作成は面倒なことに気づいた。
自分で使いたい機能だけを提供するマルチスレッドDLLに縮小する。
DLLでメモリ共有など使い慣れてない物の実験台としてやってみる。

328 :デフォルトの名無しさん:2013/09/04(水) 21:34:31.15
public class Person {

private String name;

public Person(String name) {
this.name = name;
}

public String getName() {
return name;
}

public void chart(String phrase) {
System.out.println(name + ": " + phrase);
}

}

これのC++版を教えてくださいませんか?できればthisを使ってください

329 :デフォルトの名無しさん:2013/09/04(水) 21:35:04.30
>>328
chartはchatの間違いです。

330 :デフォルトの名無しさん:2013/09/04(水) 21:49:35.61
class Person {
public:
Person(const std::string& name) : name(name) { }
std::string getName() const { return this->name; }
void chat(const std::string& phrse) const { std::cout << this->name << " : " << phrse << std::endl; }
private:
std::string name;
};

331 :328:2013/09/04(水) 21:58:45.27
>>330
ありがとうございます。すみません、これを実行すると
「Person*から非スカラ型Personへの変換が要求されました」とエラーが出ます。どういう意味でしょうか?

#include <iostream>

class Person
{
private:
std::string name;

public:
Person(std::string name)
{
this->name = name;
}

void chat(std::string phrase)
{
std::cout << name << ": " << phrase << std::endl;
}
};

int main()
{
Person emma = new Person("Emma");
emma.chat("Hi, choverybad.");
return 0;
}

332 :デフォルトの名無しさん:2013/09/04(水) 22:01:01.21
×Person emma = new Person("Emma");
○Person emma("Emma");

333 :デフォルトの名無しさん:2013/09/04(水) 22:05:30.63
>>332
ありがとうございます!コンパイル通りました。
ところで、

Person emma("Emma");
emma.chat("Hi, choverybad.");
Person ryo("Ryo");
ryo.chat("Aloha");

こうやった場合うまくいったのですが、emmaとryoはそれぞれ違うメモリを参照していると考えて良いのですか?
となるとますますc++のnewがよくわかりません。

334 :デフォルトの名無しさん:2013/09/04(水) 22:07:50.60
>>333
>こうやった場合うまくいったのですが、emmaとryoはそれぞれ違うメモリを参照していると考えて良いのですか?
はい
>となるとますますc++のnewがよくわかりません。
スコープを超えるために必要

335 :デフォルトの名無しさん:2013/09/04(水) 22:20:16.46
Person* emma = new Person("Emma");
emma->chat("Hi, choverybad.");
Person& ryo = new Person("Ryo");
ryo.chat("Aloha");

後でちゃんとdeleteしてあげないと、
エマさん達は亡霊として永遠に世界を彷徨う羽目になる

336 :デフォルトの名無しさん:2013/09/04(水) 22:23:14.21
そういう時のスマポですよ
JavaやC#から入るとこの辺がナゾのように思えると思う

337 :デフォルトの名無しさん:2013/09/04(水) 23:03:18.84
自動変数はスコープを抜けた後にぶっ壊れる
newで動的に作ったオブジェクトはdeleteするまでぶっ壊れない

338 :デフォルトの名無しさん:2013/09/05(木) 13:06:33.99
DLLでメモリ共有とアトミック操作しようと実験したら
アトミック命令は無視され通常の演算になってる事が判明。

339 :デフォルトの名無しさん:2013/09/05(木) 13:23:14.63
>>338
                 __ 
              ,ィ彳彡彡彡ュ、
            r ;´彡ィ"""´´´"ヾヾゝ
          ,r'' 彡ィ        `ヽヾ\
         /彡ヲ            `ミミ入
         {彡彡  ____ ̄ − -    ヽミヽ
         !彡ノi  ,rFヲテz  ,ィェェォ、.  !ミミミ}
        I''`彡!  ,;~_~_;    ,'_~_~、、|ミ}
         レ Y  `●ヲ'´:: ::`●ヤ'′ ミY´}
         ト ヲ     ノ :::.. '''´   !ノ ノ     何を言ってるのかさっぱり分からない    
         t__|   / ヒ _ _)ヽ   〃 /
           i     _..........,_、 ヽ   f-ィ
           ヽ   ''ヽー==-_>   ノ
       ,--ー-イ´ヽ    ⌒    イー- _
  ___ /ノ///// !ヽ ヽ、____イノi//ヽ///ヽー-、_
_ '//////|/////∧ \      イノ////ヽ、////////、、
////////|//////∧   \、__ノ´ !//////>//////////ヽ
/////////ト、//////∧  ,イ ̄ノ丶.|/////く////////////}

340 :デフォルトの名無しさん:2013/09/05(木) 13:44:50.31
2次元配列を使うのと
1次元配列でi×n + j
見たいに計算するのとどっちが速いですか?

341 :デフォルトの名無しさん:2013/09/05(木) 13:58:38.01
実測

342 :デフォルトの名無しさん:2013/09/05(木) 14:50:38.04
一緒一緒

343 :デフォルトの名無しさん:2013/09/05(木) 15:20:53.12
>>338
通常の演算がアトミックな環境なんだろ。

344 :デフォルトの名無しさん:2013/09/05(木) 15:23:02.79
>>340
遅さが問題にならないかぎりは楽な方を選べばOK

345 :デフォルトの名無しさん:2013/09/05(木) 15:48:53.92
>>338
どんな同期オブジェクトを使ってアトミックを実現しようとしたかは知らないが、
同期オブジェクトが全体で共有されていなかったというだけだろう。
普通にアトミック命令っていうとCPU関連のだが、これは命令単位だから無関係。
アトミックな処理でよく使われるCriticalSectionはプロセス内同期用でプロセスをまたげない。
Eventなどでもハンドル自体はプロセスに紐付けられるので、複製したり名前経由で開く必要がある。
>>339
AA厨なお前の理解力が低いだけじゃね?

346 :デフォルトの名無しさん:2013/09/05(木) 18:52:45.08
バカの自演乙

347 :デフォルトの名無しさん:2013/09/05(木) 19:11:20.07
ポインタ型って処理系が32bitなら4byteで64bitなら8byteとしていいんですか
あとint型も同じですか

348 :デフォルトの名無しさん:2013/09/05(木) 19:23:57.88
>>347
ほらよ
ttps://sites.google.com/site/x32abi/

349 :デフォルトの名無しさん:2013/09/05(木) 19:31:22.46
英語はイエスかノーしか分かりません

350 :デフォルトの名無しさん:2013/09/05(木) 19:43:19.40
イイイエースノノノーン

351 :デフォルトの名無しさん:2013/09/05(木) 19:46:04.83
fuck you

352 :デフォルトの名無しさん:2013/09/05(木) 19:46:05.99
IL32P64ならintとlongが32bit/4byteでpointerが64bit/8byte
I32LP64ならintが32bit/4byteでpointerとlongが64bit/8byte
ILP32ならintとlongとpointerが32bit/4byte

ところでIL32P64(LLP64)とI32LP64(LP64)ってOSによるって言われるけど、実際はこれコンパイラの領分じゃないの?

353 :デフォルトの名無しさん:2013/09/05(木) 19:48:38.98
>>347
Yes。今はintが4byteってbit数少なすぎて使い物にならない
32bitでもintは8byteにしないと駄目って状態

354 :デフォルトの名無しさん:2013/09/05(木) 20:08:47.61
1byteって8bitって限らないんでしょ?なんで8bit前提でint32_tとか付けてんの

355 :デフォルトの名無しさん:2013/09/05(木) 20:18:55.79
8bitに限らないからこそだろ
1byteが8bitだろうと9bitだろうとint32_tは32bitだ

356 :デフォルトの名無しさん:2013/09/05(木) 22:48:01.82
正確には32ビット“以上”な。実際には36ビットかもしれないし64ビットかもしれない。
32ビットジャストと仮定してはいけない。

357 :デフォルトの名無しさん:2013/09/05(木) 23:02:27.25
え、そうなのか
シリアライズとかに使うとまずいのか?

358 :デフォルトの名無しさん:2013/09/05(木) 23:03:02.26
>>356
int32_tは厳密に32bit
32ビット以上なのはint_least32_tだ

359 :デフォルトの名無しさん:2013/09/05(木) 23:03:09.93
以上がついてるのは_fastとかじゃないの

360 :KUSO KOTE:2013/09/05(木) 23:04:03.58
>>356
んなこたーない
ISO/IEC 14882:2011 p18.4.1
ISO/IEC 9899:1999 p7.18.1.1
Exact-width integer types

361 :デフォルトの名無しさん:2013/09/05(木) 23:22:32.13
で、何を32ビットジャストと仮定してはいけないんだって?

362 :デフォルトの名無しさん:2013/09/05(木) 23:26:10.33
解説ありがとうございます
32bit環境は一律にILP32だけど64bitになるとIL32P64など整数型が4byteのままということもあるわけで
つまり64bit環境だとポインタを整数型で受けるにはint64_tの宣言が必要になるんですね

363 :デフォルトの名無しさん:2013/09/05(木) 23:29:29.92
>>362
お願いなのでint64_tでなくintptr_tにして下さい

364 :デフォルトの名無しさん:2013/09/05(木) 23:32:45.39
>>345
カウントするだけのDLLで。
不具合の原因は、各スレッドで終了時FreeLibraryを読んでたからみたい。これで初期化されてしまうよう。



#pragma data_seg("SHAREDMEM")
static volatile long shared = 0;
#pragma data_seg()


extern "C" int WINAPI foo() {
return InterlockedIncrement(&shared);
}

365 :デフォルトの名無しさん:2013/09/05(木) 23:33:43.44
>>363
そうします

366 :デフォルトの名無しさん:2013/09/05(木) 23:35:44.69
>各スレッドで終了時FreeLibraryを読んでた
バカにも程がある

367 :デフォルトの名無しさん:2013/09/06(金) 00:03:19.11
int32_t が 32bit じゃない環境なんてあるのか?

368 :デフォルトの名無しさん:2013/09/06(金) 00:08:13.63
ポインタ幅はコンパイラ次第だろ。
LSI-Cとかいうやつは今でも16か8だろ。

369 : ◆QZschizo.ptH :2013/09/06(金) 02:54:02.93
>>368
32か16

370 :デフォルトの名無しさん:2013/09/06(金) 03:50:02.92
さすがにLSI-C80(8080/z80用)でも
サイズが8ビットのポインタはないな。

371 :デフォルトの名無しさん:2013/09/06(金) 08:31:37.57
32bitCPUであっても、ソフト的に256bitポインタのコンパイラは可能だろ。たとえばHDDなどを指すのに利用。

372 :デフォルトの名無しさん:2013/09/06(金) 09:17:12.58
>>371
「OSとはコンパイラを含む」みたいなUnixですら厳守されてるか怪しい定義を持ってこないとCPUやOSでその辺を定めることは出来ないよなぁ…
だが、HDDであっても余程大規模にクラスタリングしないと128bitどころか64bitで事足りてしまうな。
メモリ空間を富豪的に使ったアルゴリズムやメモリバンク的な使い方を含むポインタとか、もっとニッチな特殊用途とかか?

373 :340:2013/09/06(金) 09:23:43.79
たとえば1次元配列の場合
全体を計算するとき
xをインクリしながらa[x]を0からn*mまで計算するだけじゃないですか。
二次元だとiとjの全ての組み合わせについてa[i][j]で計算するから時間かかりませんか?

374 :デフォルトの名無しさん:2013/09/06(金) 09:36:25.99
実際に比べてみれば

375 :デフォルトの名無しさん:2013/09/06(金) 11:53:13.46
変わらん
http://ideone.com/6yv4ll

376 :デフォルトの名無しさん:2013/09/06(金) 12:12:56.77
>>373>>375
1次元配列と2次元配列だとアラインメント位しか変わらない。
配列(ポインタ)の配列だと、ポインタ参照のコストが増える。

377 :デフォルトの名無しさん:2013/09/06(金) 12:13:35.50
>>371
頼むから far ポインタの悪夢を蒸し返すのはやめてくれ

HDD を指すのにポインタは使わんだろ
mmap はメモリ空間内が前提だし

>>372
ところで 16384PB で足りない用途って何だろう
今の SDRAM 単価ではハワードヒューズでも買えないが富豪って誰?

378 :デフォルトの名無しさん:2013/09/06(金) 12:22:01.52
>>370
6502

379 :デフォルトの名無しさん:2013/09/06(金) 12:41:48.50
>>377
仮に買えても設置運用で死ぬだろw

380 :デフォルトの名無しさん:2013/09/06(金) 12:45:50.74
>>377
>HDD を指すのにポインタは使わんだろ
仮想メモリ機構をコンパイラやライブラリで提供してしまいHDD全てをメモリとしてマップしてしまう、
とかいうアーキテクチャのコンパイラって想定が可能という話でしょ。
OSASKだったかメモリとストレージの区別がないOSって有った気がするし。

>富豪って誰?
富豪なのはアルゴリズム。

あんまいい例ではないが、例えばメモリアドレスの上位128bitを8bit毎にB木のキーに振るとか。
160bitをハッシュ、32bitをシノニムID、64bitがメモリ空間なハッシュテーブルにするとか。
128bitをIPv6アドレス、64bitをデータ種別、64bitがメモリ空間なクラスタリングアーキテクチャとか。

当然のことだが使い切ることは想定せず、スッカスカのまま運用する。
フラグメンテーションを気にせずGCなんて忘れてガンガン浪費する事もできる。
効率が悪いとあっという間にアドレス空間を食いつぶしてIPv4みたいな事になるけどなw

381 :デフォルトの名無しさん:2013/09/06(金) 13:07:43.83
領域を区切らず広大な空間をフラットに使うらしい

382 :デフォルトの名無しさん:2013/09/06(金) 13:36:52.68
>>377
物理メモリと仮想メモリをごっちゃにしてる?
仮想メモリに割り当てられるブツは物理メモリだけじゃなくて、
いまでもI/Oポートやファイルを割り当てているように、なんでも割り当てられるし、
しかも空間が広ければ広いほど自由度が上がる。
たとえば、ネットワーク上に分散したファイルをまとめて仮想メモリに割り当てるような
OSがあれば、普通にメモリを読み書きするプログラムを書くだけでクラスタ対応できちゃう。

383 :デフォルトの名無しさん:2013/09/06(金) 13:45:01.66
377じゃないが、実行環境は小さいメモリ空間なのに大きい空間を扱う、
(32bit空間で256bit空間を扱う)のが悪夢って言ってるんだろう。

意味がわからないならnear/farポインタでググれ。

384 :デフォルトの名無しさん:2013/09/06(金) 14:26:45.88
>>382
そのすごいOSはもうあるんだが

385 :デフォルトの名無しさん:2013/09/06(金) 14:36:16.09
そして馬鹿でかいメモリの一部を壊して全体をロールバックするのがお前の仕事だッ

386 :デフォルトの名無しさん:2013/09/06(金) 16:20:27.82
>>383
ああなるほど。だがどっちみちコンパイラサポートに全力で依存するのだし、
コンパイラにその辺始末させればnear/far程メンドクサクはならないんじゃね?
オーバヘッドは知らん

387 :デフォルトの名無しさん:2013/09/06(金) 17:16:10.94
メモリ空間がフラットでありさえすれば、今だってポインタのビット数なんて
ほとんど意識してないでしょ。

388 :デフォルトの名無しさん:2013/09/06(金) 17:21:45.09
いや死活問題だよ
ここは C++ スレなので詳しくは言わんが

389 :デフォルトの名無しさん:2013/09/07(土) 12:49:12.11
C++のソースを見ていると
wstring pipeName = L"";
という書き方をしている箇所があるのですが
この構文はどういう意味でしょうか?

Lって何を指してるのですか?
マルチバイトの文字列には必ず必要なのかと思ったらそうとは限らないみたいですし・・・

390 :デフォルトの名無しさん:2013/09/07(土) 12:52:58.94
>>389
Literalの略。
マルチバイト文字ではなく、ワイド文字(を引数に取る)の際は必ず必要。

391 :デフォルトの名無しさん:2013/09/07(土) 14:20:33.54
>>390
>Literalの略
ソースは?

392 :デフォルトの名無しさん:2013/09/07(土) 14:30:51.68
Long の略のような希ガス

393 :デフォルトの名無しさん:2013/09/07(土) 14:44:47.53
Lって規格にどう書かれているんだ

394 :デフォルトの名無しさん:2013/09/07(土) 14:51:36.05
Lが付いたらwchar_t型ってかかれているだけだが

395 :390:2013/09/07(土) 15:06:46.42
ソースなし。
失礼・・・。

396 :デフォルトの名無しさん:2013/09/07(土) 15:28:03.20
ソースが欲しけりゃコンビニかスーパーで買ってこいよ

397 :デフォルトの名無しさん:2013/09/07(土) 15:32:44.56
Literalじゃねえよw

398 :デフォルトの名無しさん:2013/09/07(土) 15:42:12.60
Riteral
uiteral
Uiteral
も必ず必要

引用符は閉じたり閉まったりする

399 :デフォルトの名無しさん:2013/09/07(土) 15:47:41.85
R"あ";
が正しい

400 :デフォルトの名無しさん:2013/09/07(土) 15:53:47.59
LR"(...)"
UR"zzz(_*_)zzz"

401 :デフォルトの名無しさん:2013/09/07(土) 17:14:12.64
俺も知りたい。

そう、L"xxx"って書くと1字16bitのUNICODE文字列になり、
それに関連して、_T("xxx")ってのがあるわけだが、

L"xxx"ってのは、規格なの?デファクトなの?

402 :デフォルトの名無しさん:2013/09/07(土) 17:25:30.67
>16bitのUNICODE
ワイド文字の符号化方法は未規定
>_T
VC++のthcar.hにあるマクロ
>L
規格

403 :デフォルトの名無しさん:2013/09/07(土) 17:30:34.27
LがLiteralの略ならL5とか書けても良さそうっすね

404 :デフォルトの名無しさん:2013/09/07(土) 18:09:19.14
long char かと思ったよ

405 :デフォルトの名無しさん:2013/09/07(土) 18:24:52.06
>>403
L5 ⇒ 5L

L5 だと識別子になっちゃう

406 :デフォルトの名無しさん:2013/09/07(土) 19:18:09.16
L4だとレディス4になっちゃう

407 :デフォルトの名無しさん:2013/09/08(日) 01:13:11.47
L4Uだと

408 :デフォルトの名無しさん:2013/09/08(日) 17:37:11.27
こんなこと聞くのも申し訳ないのですが、C学習後の人間がC++を勉強するにはどの本がお勧めですか?
ロベールとか、独習とかありますが
当方、全くの初心者ではなく、プログラムにはやや精通していて、PHP、JS、Pythonなども分かるので、オブジェクト志向には抵抗はありません
アドバイス頂けたら幸いです

409 :デフォルトの名無しさん:2013/09/08(日) 17:47:40.35
>>408
なんのためにC++やろうとしてるのかによるな

410 : ◆QZschizo.ptH :2013/09/08(日) 18:07:26.60
>>408
ここは accelarated c++ なぞどうだい?http://www.amazon.co.jp/dp/4894714221
え?これもピアソン?

411 :デフォルトの名無しさん:2013/09/08(日) 18:33:00.62
>>408
>>409 のとおりだが、どのplatformで、何のライブラリで作ろうとしてるかってのもある
極端な話、API直叩きととQtとMFCじゃ本も全然違うし

412 :デフォルトの名無しさん:2013/09/08(日) 19:45:36.04
>>408
C++は特殊言語だから
最初は素直にロベール読むことをお勧めするよ

413 :デフォルトの名無しさん:2013/09/08(日) 21:00:30.13
禿4
禿1をも超えるクオリティ

414 :デフォルトの名無しさん:2013/09/08(日) 22:51:43.40
質問お願いします

string型の配列を動的に確保したいのですが、それは可能でしょうか
一応、以下のようにやってみて、動作はしているのですが、
VC++の自動変数のウィンドウから、sに「<不適切な Ptr>」と表示されているので、
何か間違っているような気がして質問させていただきました

string *s;
s = new string[n];
for(int i=0; i<n; ++i) cin >> s[i];
for(int i=0; i<n; ++i) cout << s[i] << endl;
cout << sizeof(s) << endl; //ここが要素数より一つ小さくなる理由も分からない

delete[] s;

尚、delete後をブレークポイントにしています

教えていただけると幸いです。よろしくおねがいします

415 :デフォルトの名無しさん:2013/09/08(日) 22:58:45.56
vectorを使う

416 :デフォルトの名無しさん:2013/09/08(日) 23:01:15.62
>>414
ポインタにsizeofは無意味だぞ

417 :デフォルトの名無しさん:2013/09/08(日) 23:01:46.35
stringはもとから動的確保だ。

418 :デフォルトの名無しさん:2013/09/08(日) 23:01:59.02
>>414
sizeof(s) の結果が要素数と違うのはポインタのサイズ(4バイトなり8バイトなり)を
返しているだけで、配列の要素数を返しているわけじゃないから。

419 :デフォルトの名無しさん:2013/09/08(日) 23:03:21.12
>vectorを使う

これが一番悪い答えな。良いこのみんなは覚えておくように

420 :デフォルトの名無しさん:2013/09/08(日) 23:05:22.23
そうだなunique_ptr<string[]>にすべきだな

421 :デフォルトの名無しさん:2013/09/08(日) 23:06:33.89
うむ、時代はdequeだ

422 :デフォルトの名無しさん:2013/09/08(日) 23:13:12.99
deleteしていいのは小学生まで

423 :デフォルトの名無しさん:2013/09/08(日) 23:28:30.32
vector<shared_ptr<string>>で

424 :414:2013/09/08(日) 23:28:59.63
ありがとうございます

sizeofに関しては理解しました。おはずかしい

deleteはよくわかりません

stringを動的にしたいのでは無く、stringの配列を動的にしたいです
どうでしょうか

425 :デフォルトの名無しさん:2013/09/08(日) 23:29:53.08
vectorもちょっと調べてみます

426 :デフォルトの名無しさん:2013/09/08(日) 23:31:42.69
vector<string>やvector<string*>でいいだろ。
後者は、確保サイズが大きく書き換えが書き換えがよくされる時。

427 :デフォルトの名無しさん:2013/09/08(日) 23:34:06.73
vector<string*>はやめろせめてvector<unique_ptr<string>>にしろ

428 :デフォルトの名無しさん:2013/09/08(日) 23:36:46.41
>>419
どうしてだめなんですか?
悪いのは答えじゃなくて>>419のおつむじゃ

429 :デフォルトの名無しさん:2013/09/08(日) 23:38:33.28
理由は何一つ質問に答えてないから

430 :デフォルトの名無しさん:2013/09/08(日) 23:41:49.05
それだと>>419の「よいこの〜」と矛盾するな

431 :デフォルトの名無しさん:2013/09/09(月) 00:18:51.36
>>422
VC++6指定の仕事来たぜ!

432 :デフォルトの名無しさん:2013/09/09(月) 00:24:49.83
>>431
おめでとう!

433 :デフォルトの名無しさん:2013/09/09(月) 00:57:22.28
VC6ではunique_ptr、shared_ptrが使えないです。
VC6ではどうすればいいですか?

434 :デフォルトの名無しさん:2013/09/09(月) 00:58:53.01
そのぐらい自分で作れ

435 :デフォルトの名無しさん:2013/09/09(月) 01:02:27.31
なんで誰も「何か間違っている」に気づかない(指摘しない)んだ?

>>414
>尚、delete後をブレークポイントにしています
>sに「<不適切な Ptr>」と表示されている
そりゃsが指してる先をdeleteしたんだから、sが指してるのは元々string[n]だっただけの未使用領域なのは当然。
未使用領域を指してるポインタは不適切な Ptrだろうさ、そりゃ。

436 :デフォルトの名無しさん:2013/09/09(月) 01:04:22.14
>>435
釣りだと思ったから指摘しなかった

437 :デフォルトの名無しさん:2013/09/09(月) 01:11:45.06
>>436
それで別のとこに食いついたレスするとかイミフです!(>_<)

438 :436:2013/09/09(月) 01:21:45.29
反射的に>>422を書き込んだすまぬ

439 :デフォルトの名無しさん:2013/09/09(月) 01:55:07.34
人生は短い。
食べたいものは食べる。
食べたいものだけ食べる。
それでいいじゃないか

440 :デフォルトの名無しさん:2013/09/09(月) 02:40:47.69
vectorとlistの仕組みはすぐ分かったけどdequeが未だに分からない

441 :デフォルトの名無しさん:2013/09/09(月) 03:23:39.09
データベースの設計について質問です。
環境は`PostgreSQLです。
現在、以下のようなデータベースがあります。

DB名: girls
カラム: id (UNIQUE) , firstname , lastname , birthday , address , telno , mailaddress , lineid , twitterid , blogurl , boyid , startboyfrienddate

DB名: seiri
カラム: id , startdate

DB名: underware
カラム: id , date , buracolor , pantucolor , stokkingcolor

DB名: kousui
カラム: id , date , kousuiname

DB名: boys
カラム: id (UNIQUE) , firstname , lastname

girlsに入力されている各girlについて、付き合ったことのあるboysのidを関連付けさせたいと思っています。
girlsにlastboyidというカラムを追加しようと思いましたが、1人が過去に複数人と付き合ったことがある場合があり、
lastboyid2 , lastboyid3, ...と追加することになってきりがないため、データベースの設計について悩んでいます。
カラムに配列を入れることもできるらしいのですが、非推奨とのことでした。
非推奨ではない方法で何とか関連付けさせることはできないものでしょうか?
もう1ヶ月悩んでいます助けてください。

442 :デフォルトの名無しさん:2013/09/09(月) 03:33:49.16
>>440
コンパイラ付属のSTLライブラリのソース読めば良いと思うよ
>>441
スレチすぎるが…
DB名: kousai
カラム: id , girl_id , boy_id
交際期間を含めるなら、 , startdate , enddateを追加。

443 :デフォルトの名無しさん:2013/09/09(月) 03:35:28.86
>>441
こんな気持ち悪いテーブル初めて見たw

444 :デフォルトの名無しさん:2013/09/09(月) 03:57:21.15
出会い系DB?

445 :デフォルトの名無しさん:2013/09/09(月) 04:22:21.64
不倫SNSかも

446 :デフォルトの名無しさん:2013/09/09(月) 04:28:54.83
STLのソースって難解すぎるんだけど皆読めんの?ちなVC

447 :デフォルトの名無しさん:2013/09/09(月) 04:53:39.85
seriousity(本気度)も男女それぞれ入れるんだ!

448 :デフォルトの名無しさん:2013/09/09(月) 07:59:45.14
素朴な疑問なんだが、電話番号に始まって彼氏に至るまで、なんで単一カラムなんだ?

449 :デフォルトの名無しさん:2013/09/09(月) 08:11:36.60
第三正規化してないんだろ

450 :デフォルトの名無しさん:2013/09/09(月) 08:24:42.01
>>448
ちょっとなに言ってるかわかんない

451 :デフォルトの名無しさん:2013/09/09(月) 08:32:00.81
>>433,434
VC6のIDEに最新のcl積め /GXも大丈夫だ
コマンドラインコンパイラ・リンカは自分でひっこぬいて来い
あと、あの当時は/EHscじゃなかったから、適当に何とかしてくれ

452 :デフォルトの名無しさん:2013/09/09(月) 08:42:58.30
>>446
STLそのもののソースのことか、STLを使ったソースのことか、どっちだ?
まあどっちにしても慣れ。

453 :408:2013/09/09(月) 11:20:58.19
お答えいただきありがとうございました

454 :デフォルトの名無しさん:2013/09/09(月) 20:11:17.27
>>452
VCって書いてるからそのものでしょ

455 :デフォルトの名無しさん:2013/09/09(月) 22:21:18.39
>>446
別に難解でも何でもないよ
Templateに慣れていれば簡単

456 :デフォルトの名無しさん:2013/09/09(月) 22:26:18.80
>>446
http://www.cplusplus.com/reference/

こういう所を読んでおけば十分
C++コンパイラはpythonなどで機械式に展開したソースが多いので
確かに人間が見ると見にくいが、難解というのとは違う

457 :デフォルトの名無しさん:2013/09/09(月) 22:28:37.97
全然関係ないけどさ
言語の勉強はじめようとしてる人間に規格書すすめるアホって結構いるよね

458 :デフォルトの名無しさん:2013/09/09(月) 22:41:07.91
一部のキティGUYだけでしょ

459 :デフォルトの名無しさん:2013/09/09(月) 22:59:39.44
2次元配列のアクセス速度を測定したら、横読み、縦読みで速度差があって、newで確保した縦読みが最遅だ。2倍は違う。



#define _SECURE_SCL 0
#include <time.h>
#include <stdio.h>
#include <vector>
using namespace std;
unsigned int N = 1<<12;
unsigned int ROOP = 5;
void main() {
unsigned int n, r, sum, cl;
vector< vector<char> > vec(N, vector<char>(N));
for(n=0; n<N*N; n++) vec[n/N][n%N] = n%255;

cl=clock(); sum=0; for(r=0; r<ROOP; r++) for(n=0; n<N*N; n++) sum+=vec[n/N][n%N]; cl=clock()-cl;printf("cl=%d sum=%d\n", cl, sum);

cl=clock(); sum=0; for(r=0; r<ROOP; r++) for(n=0; n<N*N; n++) sum+=vec[n%N][n/N]; cl=clock()-cl;printf("cl=%d sum=%d\n", cl, sum);

vector< vector<char> >().swap(vec);

char **arr = new char *[N]; for(n=0; n<N; n++) arr[n] = new char [N]; for(n=0; n<N*N; n++) arr[n/N][n%N] = n%255;

cl=clock(); sum=0; for(r=0; r<ROOP; r++) for(n=0; n<N*N; n++) sum+=arr[n/N][n%N]; cl=clock()-cl;printf("cl=%d sum=%d\n", cl, sum);

cl=clock(); sum=0; for(r=0; r<ROOP; r++) for(n=0; n<N*N; n++) sum+=arr[n%N][n/N]; cl=clock()-cl;printf("cl=%d sum=%d\n", cl, sum); }

460 :デフォルトの名無しさん:2013/09/10(火) 00:14:53.09
ROOPじゃなくてLOOPじゃね?

461 :デフォルトの名無しさん:2013/09/10(火) 00:15:03.46
ROOP

462 :デフォルトの名無しさん:2013/09/10(火) 00:52:14.12
>>459
そりゃおめーSDRAMにはバースト転送モードというのがあってだな

463 :デフォルトの名無しさん:2013/09/10(火) 01:29:19.87
計算結果の再利用とかループ最適化とかキャッシュメモリへの載り方とかが違ってくるんでそういう結果になるときもある

464 :デフォルトの名無しさん:2013/09/10(火) 02:20:41.07
C++の勉強がてら行列のクラスを作ってるんだけど、
代入や+=演算子でメンバ変数である配列をコピーする場合、
どうするのが一番速いんだろうか?
forループを使うかループを展開するか、
生配列を使わずstd::arrayを使って=演算子を使うか。
下手なことして最適化の邪魔をしてしまうとかある?

Debugモードならループを展開したのがもちろん早かったんだが、
Releaseモードだとどれもゼロ秒になってしまって分からん

465 :デフォルトの名無しさん:2013/09/10(火) 02:21:55.66
すいません環境を書き忘れました。
VS2010を使用しています。

466 :デフォルトの名無しさん:2013/09/10(火) 02:32:13.46
まずもっと精度の良い計測方法を使う

467 :デフォルトの名無しさん:2013/09/10(火) 02:37:56.87
class X{int hairetsu[10];
const X&operator+=(const X&a){struct ha{int hairetsu[10];}; *(*ha)hairetsu=*(*ha)a.hairetsu; return*this;} };

468 :デフォルトの名無しさん:2013/09/10(火) 03:49:51.00
+= で単純に代入してはいかんでしょ

469 :デフォルトの名無しさん:2013/09/10(火) 04:30:13.12
char**は2次元配列とは違うよなぁ…

470 :デフォルトの名無しさん:2013/09/10(火) 05:06:53.41
>>464
VSのDebugモードは通常最適化しないから測定する意味ないよ。

471 :デフォルトの名無しさん:2013/09/10(火) 19:15:24.16
SIMD使え、SIMD。

472 :デフォルトの名無しさん:2013/09/10(火) 21:48:14.23
>>464
それは、たぶんベンチ取ろうとしているコードに問題がある
最適化がかかると、外部に副作用をもたらさないものは無視される
例えば計算結果を表示せずに、時間だけ測ろうとすると、時間は常に0になる
また計算結果が常に同じになるものは、事前に計算してその定数を表示するコードに
なることがある

473 :デフォルトの名無しさん:2013/09/10(火) 22:48:35.09
>>459
こう言う当たり前の事を質問する奴が多いのは、Cとかアセンブラに無縁だった奴がC++を始めるからだろうか?

474 :デフォルトの名無しさん:2013/09/10(火) 23:14:27.07
>>473
C++がゆとり用言語だからだよ

475 :デフォルトの名無しさん:2013/09/10(火) 23:38:16.45
ファイル入出力がマルチフラッホームで統一コードで変更なく動くのありますか。
WindowsだとUTF16LEにしないと全てのファイルにアクセスできなかったり、fopenで開ける限界がOSやハードの上限より下だったり不便です。

476 :デフォルトの名無しさん:2013/09/10(火) 23:43:09.75
ゆとり爆死用言語だろ。
Javaとかに比べると爆死で仕留めてくれる率が高い

477 :デフォルトの名無しさん:2013/09/10(火) 23:53:57.78
>>462
EDO時代の牛太郎かおまえは

478 :デフォルトの名無しさん:2013/09/10(火) 23:57:16.99
シーケンシャルリードとランダムリードのちがい

479 :デフォルトの名無しさん:2013/09/11(水) 00:49:22.09
FPMも知らねえんじゃね?w

480 :464:2013/09/11(水) 02:00:10.35
レスありがとうございました。
無事Releaseモードでも計測ができました。
結果自分でループを展開しておいたものが一番速い結果になりました。

481 :デフォルトの名無しさん:2013/09/11(水) 08:34:22.05
std::mapってキーは重複できないっていうからキーと値が1:1なんだと思ってたけど違うの?
findでイテレータが返ってくるということは値が複数ある場合を想定してるってことだよね

482 :デフォルトの名無しさん:2013/09/11(水) 08:57:54.79
違わないよ。
そうでもないよ。

483 :デフォルトの名無しさん:2013/09/11(水) 09:04:18.62
今ならoptionalで返すんだろうけどな
そんなことないか

484 :デフォルトの名無しさん:2013/09/11(水) 09:39:38.43
ソートされてる保証があるから、見つかったやつを起点に前後の要素にアクセスしたいこともある。
イテレータで正解。

unordered_map なら optional<ValueType&> でもいいんじゃないかな。

485 :デフォルトの名無しさん:2013/09/11(水) 09:43:21.38
optional<ValueType&>って大丈夫だったっけ?

486 :デフォルトの名無しさん:2013/09/11(水) 09:57:20.05
>>481
見つからないことを示す値も欲しい

487 :デフォルトの名無しさん:2013/09/11(水) 11:31:26.39
>>486
だからoptionalって言っているんだろ。

488 :デフォルトの名無しさん:2013/09/11(水) 12:29:27.07
>>475
WinといえばNTFSが多いが、NTFSがUNICODEで格納してる以上、
UNICODEでアクセスするのがネイティブだと考えるのが自然

489 :デフォルトの名無しさん:2013/09/11(水) 14:02:26.17
>>481
mapだけインターフェースが違ってたら困るだろ

490 :デフォルトの名無しさん:2013/09/11(水) 15:01:45.17
mapとmultimap
インターフェイスは揃えた方がいいんだ
おまえらもクラス作るときはそういう配慮しろ

491 :デフォルトの名無しさん:2013/09/11(水) 15:16:07.95
Windowsとlinuxで同一ソースで動いて、OS機能を最大限活かせる、ファイルIOライブラリありますか?
fopenやwfopenは、同時に開けるファイルハンドル数に制限があったり、UNCODEで切り替え無いといけないんですが。

492 :デフォルトの名無しさん:2013/09/11(水) 15:47:43.14
最大限活かすと移植性が両立できるわけないだろ

493 :デフォルトの名無しさん:2013/09/11(水) 15:54:34.92
Qtでも使えば

494 :デフォルトの名無しさん:2013/09/11(水) 18:14:45.22
>>491
そりゃぁ無理だ。

495 :デフォルトの名無しさん:2013/09/11(水) 21:54:24.61
boost::filesystem ってのがあるけど、パスやディレクトリの処理が主で
ファイルの読み書きはストリームのみなのがいまいち。

496 :デフォルトの名無しさん:2013/09/11(水) 22:31:14.94
>>491
無理です。
Windowsのマルチバイトファイル処理関数は
開けないファイルがあったり、制限がある。

497 :デフォルトの名無しさん:2013/09/11(水) 22:59:34.11
>>496
ロケールでUTF-8を選択できればマルチバイト文字用APIだけで済ませられそうなもんだけどな。
コードページ番号は存在するくせに使えないケースが普通にあってどうしようもない。

498 :デフォルトの名無しさん:2013/09/11(水) 23:24:51.00
大体、LinuxというかPOSIXのファイル操作APIが貧弱すぎるんだよ!

499 :デフォルトの名無しさん:2013/09/12(木) 00:11:31.20
>>498
具体的に何が足りない?

500 :デフォルトの名無しさん:2013/09/12(木) 00:17:39.60
>>482-490
インターフェースを統一するためなんだね
皆さんありがとう

501 :デフォルトの名無しさん:2013/09/12(木) 00:28:18.31
Linuxでなく、windowsのインターフェースが問題。

502 :デフォルトの名無しさん:2013/09/12(木) 09:54:54.16
ヂュアルブートにしたら分かるけど
ウィンドウズからリナックスの入ってるドライブにはそのままアクセスできない
逆にリナックスからウィンドウズの入ってるドライブにはそのままアクセスできる
画像とかも普通にダブルクリックで見られる

503 :デフォルトの名無しさん:2013/09/12(木) 09:57:22.46
linux NTFS読めるようになったのか

504 :デフォルトの名無しさん:2013/09/12(木) 10:34:14.64
>>503
モジュールでもfuseでも、昔から読み込みはできてたぞ
書き込みが不安定だっただけで

505 :デフォルトの名無しさん:2013/09/12(木) 10:55:16.73
だからパスワードが分からなくてもUSBをさせば(ry

506 :デフォルトの名無しさん:2013/09/12(木) 13:54:39.35
>>503
書き込みだって出来るよ

507 :デフォルトの名無しさん:2013/09/12(木) 15:21:51.69
>>502
それはファイルシステムを読むためのドライバが入ってるかどうかの問題で全く別の問題。
Linuxでも/usr/homeをFATなパーティションにすればWindowsから読める。
/をFATに出来るかどうかは知らん。

Windowsでもドライバ突っ込めば出来るんじゃねーの?

508 :デフォルトの名無しさん:2013/09/12(木) 15:22:47.47
出来る出来ないではなく信頼出来るかどうかで話してくれ
領域まるごと死なせてから言い訳はゆるさん

509 :デフォルトの名無しさん:2013/09/12(木) 15:47:48.30
>>508
Linuxの非レガシファイルシステムは全滅じゃね?
ちまちま致命的なミスのfixしてた気がするんだが。

510 :デフォルトの名無しさん:2013/09/12(木) 16:56:51.65
>>502
そりぁ Linux なんて相手にしてない Windows だからねぇ...

511 :デフォルトの名無しさん:2013/09/12(木) 17:03:37.10
FSの信頼性の責任なんか、他デバイスに委譲しちまえww

512 :デフォルトの名無しさん:2013/09/12(木) 18:26:54.10
>>509
致命的って、試験運用のbtrfsぐらいだろ。
サーバーで使われてるジャーナル付きfsが、そう頻繁に壊れてたまるか。
FATを軽く拡張しただけのNTFSのがよっぽど怖いわ。

513 :デフォルトの名無しさん:2013/09/12(木) 19:31:44.76
>>512
2009/10頃、 Ext4で毎週のように新しい被害者が出た高頻度破損
原因はジャーナルが一周したところでリブートするとチェックサムエラーとかいうアレゲなバグ
http://www.atmarkit.co.jp/flinux/rensai/watch2009/watch11a.html

2.6.0 (Dec ’03) から 2.6.39 (May ’11) の間のファイルシステムへのパッチ分析
バグ件数XFS:511、Ext4:450、Btrfs:358、Ext3:229、ReiserFS:158、JFS:80
時間軸分析してもExt3も含めて大きな減少傾向や増加傾向はなし
http://linux.slashdot.jp/story/13/04/10/0126257/
http://green-rabbit.sakura.ne.jp/note/2013/04/07/189/
https://www.usenix.org/conference/fast13/study-linux-file-system-evolution

修正件数が目に見えるが故だろうけど、安定してる感が有るかというと微妙……
発生率ベースでは低いんだろうけど、それいうとNTFSも破損報告が多いかというと…なぁ…

514 :デフォルトの名無しさん:2013/09/12(木) 19:39:36.28
>FATを軽く拡張しただけのNTFS
どこがだよアホ

515 :デフォルトの名無しさん:2013/09/12(木) 19:48:24.10
>>513
致命的なバグがちまちまって1例だけじゃねえか。

>>514
お前はNTFSの歴史とFATとの互換性を調べてこい。

516 :デフォルトの名無しさん:2013/09/12(木) 19:54:26.61
犬厨のFUDだったか

517 :デフォルトの名無しさん:2013/09/12(木) 20:59:44.47
>>515
> お前はNTFSの歴史とFATとの互換性を調べてこい。

ばーか (w

NTFS は元々、Windows NT 系におけるサー バ用途を目的として開発されたファイルシステムであり、MS-DOS から使われてきた FAT と互換性を持たない。

518 :デフォルトの名無しさん:2013/09/12(木) 21:22:37.65
>>517
FATはそのままNTFSに変換できるぞ。勉強になったな。
とっととNTFSの歴史とFATとの互換性を調べてこい。

519 :デフォルトの名無しさん:2013/09/12(木) 21:52:28.67
変換できるかどうかは
どこまでコンバーター開発に
力を入れるかであって、
FATを拡張したというのが誤りで
あることに変わりはないのだが
キチガイなの?

520 :デフォルトの名無しさん:2013/09/12(木) 22:18:44.23
>>519
互換性があったから単独ディスクで変換なんて器用な真似ができるんだよ。
憶測だけで反論してないでとっとと自分の目で確かめて来いよガキ。

521 :デフォルトの名無しさん:2013/09/12(木) 22:32:43.50
互換性はないだろ。コンバータとHDDに空きがあったら理屈上、どの論理フォーマットへも変換可能だろ。

522 :デフォルトの名無しさん:2013/09/12(木) 22:34:10.08
>>520
FAT-NTFS変換はMFTを空き領域に作り直してるから器用クソも無いな。
なので変換したボリュームはファイルテーブルが変な位置にあってパフォーマンスがちょいと落ちる。

523 :デフォルトの名無しさん:2013/09/12(木) 22:41:13.86
FAT(テーブル)とMFTはだいぶ違う
C++erたるもの、ディスクエディタでボリュームちょっと覗いて来い

ただ、512バイト単位(代表値)で格納してるのは同じだから、
意味論的になら、テーブルを変換することはできる
だから、相互変換は実装上、力技でやってるわけで、それなりに遅いぞ

524 :デフォルトの名無しさん:2013/09/12(木) 23:11:00.85
プログラムの勉強も兼ねてローグライクゲームを作ろうとしていて、最終的にGUIにする予定でゲームの基本をコンソールで作ってます
ちょっと詰まったからソース公開してる完成されたローグライクゲームのを参考にしようとしたんだけどファイル多すぎてちょっとよくわからない

完成形と似たプログラムを参考にするときって何から見ればいいのでしょう?

525 :デフォルトの名無しさん:2013/09/12(木) 23:26:43.63
参考にしたい部分から見れば良い。
…が、参考にしたい部分を見つけるためのコード読み技能も必要になってくるんだよなぁ…
勘所がわからないなら、makeから全部読むしか無いね。

526 :デフォルトの名無しさん:2013/09/12(木) 23:31:13.66
ヘッダファイル見てどんな感じで関数分けされてるか調べるとか

527 :デフォルトの名無しさん:2013/09/12(木) 23:36:57.31
ローグライクが勉強になるかなぁ?
まずはテトリスにしとけば

528 :デフォルトの名無しさん:2013/09/12(木) 23:45:46.46
>>525
ですよねー、がんばります

>>526
なるほど、確かにファイルの分け方も考えていなかったです、みてみます

>>527
いや、まだGUIには手を出してないし
単純にローグライクが好きなジャンルのゲームだからってだけです
GUIにする前に挑戦してみます

529 :デフォルトの名無しさん:2013/09/13(金) 00:46:25.91
>>528
テトリスの作り方
http://www.nicovideo.jp/watch/sm9153259

530 :デフォルトの名無しさん:2013/09/13(金) 00:52:56.12
>>529
見てないけど多分見たことあるやつだと思う、まだまだコンソールで完成が見えないからまたあとで見返してみるよ、さんくす

531 :デフォルトの名無しさん:2013/09/13(金) 03:42:51.96
>>524
普通に頭からおっていくのが一番じゃないか?
それこそ doxygenとか IDEの能力借りるとかして、
そこが読み込まないといけない部分か?は推測立てながらだが。

532 :デフォルトの名無しさん:2013/09/13(金) 08:06:13.02
>>518
変換できるから互換性あるとか...バカじゃねーの?
って書こうとしたら既にフルボッコ状態で、ワロタ

533 :デフォルトの名無しさん:2013/09/13(金) 09:54:34.97
.hと.hppどっち使ってるぅ〜?

534 :デフォルトの名無しさん:2013/09/13(金) 09:56:50.72
h

535 :デフォルトの名無しさん:2013/09/13(金) 10:00:40.08
積極的に .hpp
google style guideとかが .hなんで妙に方が狭い。

でも、cのheaderとは根本から違うものだとおもうから、
.hを使う気にはなれないんだよなぁ。

536 :デフォルトの名無しさん:2013/09/13(金) 10:16:12.94
Shift_JISとEUC-JPは互換性あるんだぞ
変換できるから

537 :デフォルトの名無しさん:2013/09/13(金) 10:31:43.31
.C
.H

538 :デフォルトの名無しさん:2013/09/13(金) 12:43:08.09
>>531
そこが読み込まないといけない部分か?を推測できるなら
そもそもローグライクなんて選ばないだろ

てかローグライクのプレイ適性そのものもあやしいw

539 :デフォルトの名無しさん:2013/09/13(金) 12:50:58.98
>>536
シフトJISじゃなくてShift_JISならな

540 :デフォルトの名無しさん:2013/09/13(金) 13:38:39.44
cpp cxx cc
hpp hxx

なんで hh がないんだ

541 :デフォルトの名無しさん:2013/09/13(金) 13:40:24.28
むしろccがあることが変

542 :デフォルトの名無しさん:2013/09/13(金) 13:59:16.83
>>539
んなわけないだろ。
変換が必要なら、それは互換がない。

543 :デフォルトの名無しさん:2013/09/13(金) 16:43:42.30
しかし.cppとか.hppとか何かダサいよな
.c++、.h++に統一しようぜ

544 :デフォルトの名無しさん:2013/09/13(金) 17:33:01.87
>>540
hhもたまに見かける気がするんだが
>>543
記号類を避ける場合に使えない

545 :デフォルトの名無しさん:2013/09/13(金) 18:15:56.70
これがエラーになるのですが、どこがおかしいのでしょうか、、、
#include <stdio.h>
#include <stdlib.h>
int main(void){
FILE* fp;
char s[50];
/* 読み取り用にテキストファイルをオープン */
fp = fopen( "test.txt", "w" );
if( fp == NULL ){
fputs( "ファイルオープンに失敗しました。\n", stderr );
exit( EXIT_FAILURE );
}
fputs("hello", fp);
/* 各行を読み取りながら、標準出力へ出力 */
while( 1 ){
if( fgets( s, sizeof(s), fp ) == NULL ){
if( feof( fp ) ){
break;
}
else{
fputs( "エラーが発生しました。\n", stderr );
exit( EXIT_FAILURE );
}
}
fputs( s, stdout );
}
fclose( fp );
getchar();
return 0;
}

546 :デフォルトの名無しさん:2013/09/13(金) 18:41:19.67
>>545
エラーの内容を書けよ
読み取りなのに"w"で開いてるから駄目なんじゃねえの?(適当)

547 :デフォルトの名無しさん:2013/09/13(金) 19:21:47.43
>>546
正確に言うと動くのですが、途中弟エラーをはくと言いますか、実行結果にすると、
Helloヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘヘエラーが発生しました
となるのです、

548 :デフォルトの名無しさん:2013/09/13(金) 19:25:13.44
読み書き両用にして、ポインタを元に戻せ
話はそれからだ

549 :デフォルトの名無しさん:2013/09/13(金) 19:38:36.72
意味もわからずコピペで継ぎはぎしてるのが丸わかりなんだが
サンプルを改造するにしても
1ワードずつ変更して比較したりして
隅々まで把握するような学び方をすべし

550 :デフォルトの名無しさん:2013/09/13(金) 21:55:13.98
>>545
コンパイラーやライブラリのバグ。別なコンパイラーにしろ

551 :デフォルトの名無しさん:2013/09/13(金) 22:43:11.45
つーかまずスレタイを読んで理解できるようになってから

552 :デフォルトの名無しさん:2013/09/13(金) 22:44:34.97
何か問題でも?

553 :デフォルトの名無しさん:2013/09/13(金) 22:46:07.68
問題以前

554 :デフォルトの名無しさん:2013/09/13(金) 23:00:20.52
C++のスレでC++の質問することについて
何が問題以前なのか

555 :デフォルトの名無しさん:2013/09/13(金) 23:06:22.44
>>554
俺、>>553じゃないけど
C言語のみならCやC/C++スレで、C++で拡張されたものが含まれていたらここでもいいと思う
質問者は自分が何言語でやっているのかすら分かっていないよな気がする

556 :デフォルトの名無しさん:2013/09/13(金) 23:10:51.53
>>555
つまりC++を覚えるだけでなく、
Cも学んだ上で自分のコードが
Cでも通るのか見極めないと
このスレで質問する資格が無いとな

557 :デフォルトの名無しさん:2013/09/13(金) 23:14:32.12
答えは>>548で出てるし

fp = fopen( "test.txt", "rw" );

/* 各行を読み取りながら、標準出力へ出力 */
fseek(fp, 0, SEEK_SET);
while(1) {

あとsは0セットしてから使え
そしてC++じゃねー

558 :デフォルトの名無しさん:2013/09/13(金) 23:28:36.60
>>557
>sは0セットしてから使え
why?

559 :デフォルトの名無しさん:2013/09/13(金) 23:34:38.61
>>557
>>554から立派なC++だ!って言われるよ

>>558
CじゃなくC++だからだよ

560 :デフォルトの名無しさん:2013/09/13(金) 23:39:30.65
>>558
ゼロで埋めとかないと読み込んだ文字列の終端がわからないからだよ。
その結果がヘヘヘだよ。

561 :デフォルトの名無しさん:2013/09/13(金) 23:41:42.29
fgets( s, sizeof(s), fp )だと1行がsizeof(s)バイト超えた時にナル文字終端にならないよな。
ゼロクリアしてても全部使いきるし。

562 :デフォルトの名無しさん:2013/09/13(金) 23:45:32.17
一行読み込みで終端\0はセットするだろ。

563 :デフォルトの名無しさん:2013/09/13(金) 23:48:37.14
>>560
最初の一行目だけ上手く動くんですねわかります

564 :デフォルトの名無しさん:2013/09/13(金) 23:56:27.69
おまえらってファイル読み込みもびしっとできないのか
俺同様にC++のことあんまり知らないんだな

565 :デフォルトの名無しさん:2013/09/13(金) 23:57:05.10
557だけど、fgetsが\0付けてくれるなら別にいらんな
スマソ

566 :デフォルトの名無しさん:2013/09/14(土) 00:16:10.84
C++でfgetsなんて滅多に使わないからなあ

567 :デフォルトの名無しさん:2013/09/14(土) 01:12:59.24
561だけど省略されるのは改行文字だったわスマソ

568 :デフォルトの名無しさん:2013/09/14(土) 01:14:21.16
金比羅船船

569 :デフォルトの名無しさん:2013/09/14(土) 01:15:05.65
禿4と磯、低学歴の誤訳てんこ盛りを始めから「笑いたきゃ笑え」ってスタンスで各国語訳をやろうぜ

俺はど下手米語と、北京語、キリール圏とハルピン付近、ヘブライ語くらいはできる
ヒンズー語にトライ中だが、今んとこ超硬すぎて連敗続きだ
英語はカタコトできるが、英語に似て非なるところに異常なまでの弱点をかかえている
広東とヒンズー語が中ボスのうちラスに近い強敵、それと文字を持たないアイヌ語くらい

わかりやすさにかけては痛車が象徴するように
難しい概念も一歩はなれて落ち着いて整理すると
そんなに人類まるごと全部アウェーにするものではない

「非公式・意訳ですよ」って断り書きが免罪符となるだろう
誰も反対なんかしやしねーよ、「公式・直訳」で儲ける気満々なやつも
それを参考にしないわけがない

どっちかつーと2ちゃんスラング満載のほうが、
本音が伝わりやすいだろ、そう思わんか?

570 :デフォルトの名無しさん:2013/09/14(土) 07:01:03.71
おれは2ちゃんねるにむいてない

571 :デフォルトの名無しさん:2013/09/14(土) 07:08:37.33
おれはちんこむいてない

572 :デフォルトの名無しさん:2013/09/14(土) 07:42:42.56
だってgoogleさんはストリーム禁止してるんだもん

573 :デフォルトの名無しさん:2013/09/14(土) 08:24:43.92
>>520
お前の主張だとbtrfsはext3の拡張なんだな
https://btrfs.wiki.kernel.org/index.php/Conversion_from_Ext3

574 :デフォルトの名無しさん:2013/09/14(土) 10:10:29.47
まだやるのかよ...
そろそろ許してやれ

575 :デフォルトの名無しさん:2013/09/14(土) 11:51:37.40
入れ食いですね

576 :デフォルトの名無しさん:2013/09/14(土) 14:44:59.11
うるせーこの世で唯一俺が輝ける場を邪魔すんじゃねー

577 :デフォルトの名無しさん:2013/09/14(土) 16:39:46.66
>>576
輝いてる? (w

578 :デフォルトの名無しさん:2013/09/14(土) 17:08:59.45
頭が禿げてるんだろ

579 :デフォルトの名無しさん:2013/09/14(土) 22:12:27.07
あるオープンソースライブラリのコードを見ていたら、引数なしのコンストラクタに
explicit がついているのを見つけたんですが、これって何か意味があるんでしょうか。

580 :デフォルトの名無しさん:2013/09/14(土) 22:14:39.09
何となく付けちゃったら
コンパイル通っちゃった

581 :デフォルトの名無しさん:2013/09/15(日) 13:13:45.74
荒れたスレにナゲット再び

 〃. ̄. ̄.ヽ
 |: : : |
 | : : :|
  ヽ._._./

http://monobook.org/wiki/NuGet

582 :デフォルトの名無しさん:2013/09/15(日) 23:58:32.28
カンパンかと思った

583 :デフォルトの名無しさん:2013/09/16(月) 08:45:03.29
プログラムなんか、わからない人間が、発言してるんだから、荒れるに決まってるよ。

584 :デフォルトの名無しさん:2013/09/16(月) 10:19:02.00
rubyでDB管理したいんですけど何からやればいいですか?

2chで質問から始めてます

585 :デフォルトの名無しさん:2013/09/16(月) 10:21:04.31
スレタイ

586 :デフォルトの名無しさん:2013/09/16(月) 10:21:28.78
struct hoge
{
hoge(int a, int b=0){}
};

hoge h = 111;

これも変換コンストラクタになりますか?

587 :デフォルトの名無しさん:2013/09/16(月) 10:27:47.95
>>586
なる。
12.3.1p1 Conversion by constructor

588 :デフォルトの名無しさん:2013/09/16(月) 10:29:50.41
>>586
hoge厨うざ

589 :デフォルトの名無しさん:2013/09/16(月) 10:37:42.70
>>586
お前もう少し迷惑考えろよ。
頭おかしいんじゃね。

590 :デフォルトの名無しさん:2013/09/16(月) 10:47:21.79
hogewwwwwwwwwwwwwwwwwwwwwwww頭wwwwwwwwwwww良wwwさwwwwwそwwwwwwwwうwwwwwwwwwwwwwwwwwwwwwwwww

591 :デフォルトの名無しさん:2013/09/16(月) 10:52:51.43
プライベートヘッダって考えは、C++では使わないの?
privateメンバのユニットテストはどうすればいいのか

592 :デフォルトの名無しさん:2013/09/16(月) 10:53:59.57
#define private public
いやマジで

593 :デフォルトの名無しさん:2013/09/16(月) 11:00:12.63
>>591
しなくていい

594 :デフォルトの名無しさん:2013/09/16(月) 11:37:54.38
>>592
ヘッダにメンバ全部書いてりゃそれでいいけど、pimplでヘッダからprivateメンバ追い出した場合はどうすればいいのかと

595 :デフォルトの名無しさん:2013/09/16(月) 11:44:01.08
cppをインクルードすれば?

596 :デフォルトの名無しさん:2013/09/16(月) 12:04:50.75
テストドリブン教を棄教せよ。されば救われん。

597 :デフォルトの名無しさん:2013/09/16(月) 12:30:12.02
ドブリン教に見えた

598 :デフォルトの名無しさん:2013/09/16(月) 12:35:40.62
>>592 未定義動作

599 :デフォルトの名無しさん:2013/09/16(月) 12:41:17.22
>>592
それだけだとclassの直後に書いた変数もprivateになってしまうので、

#define class struct

も付け加える

600 :デフォルトの名無しさん:2013/09/16(月) 12:47:31.53
template<struct T>
struct unko {};

601 :デフォルトの名無しさん:2013/09/16(月) 12:58:10.13
private書き換えるくらいならfriendクラス使うけど、.cppにクラス書いちゃうとどうしょうもない

602 :デフォルトの名無しさん:2013/09/16(月) 13:29:04.86
(すべての関数をテストせんでも)ええんやで

各関数でデバッグメッセージを出力するなど、異常発生位置を特定しやすいように工夫すれば、
ユニットテストの粒度を大きくしても問題ない

603 :デフォルトの名無しさん:2013/09/16(月) 17:00:48.12
publicアクセスだけでもホワイトボックステストの目的は果たせるか
friendも使わずに済むし、その方がいいか

604 :デフォルトの名無しさん:2013/09/16(月) 19:02:58.79
>>586みたいなゴミクズが日本のITの足引っ張ってんだよな

>>586みたいなクズの場合は社会から消えるだけで社会貢献になる

605 :デフォルトの名無しさん:2013/09/16(月) 19:19:30.15
hogemogefoobarに親でも殺されたのか?コイツは。

606 :デフォルトの名無しさん:2013/09/16(月) 19:25:26.19
多分どっかで恥かいたんでしょ
そんな自分を認めることができなくてこういう頭の弱い行動に出てる

607 :デフォルトの名無しさん:2013/09/16(月) 19:33:07.73
hageって可能性もあるか。
こういう反応するともっと恥かくと思うんだが…マゾいな。

608 :デフォルトの名無しさん:2013/09/16(月) 19:46:34.99
でもhoge使って解説してるサイトにまともなところが一件もないのも事実。

609 :デフォルトの名無しさん:2013/09/16(月) 19:57:57.29
そして規格書以外の解説文書は全てまともではないとか言い出すわけですね、分かります。

610 :デフォルトの名無しさん:2013/09/16(月) 20:04:40.42
if(strstr(記事全文,"hoge")) puts("クソ");
else puts("まとも");

記事全文を本当に検索しているかどうかさえ怪しいし…

611 :デフォルトの名無しさん:2013/09/16(月) 20:36:43.51
>>608
ウェブサイトだけじゃなくて書籍でもそうだぞ
例外はないから悪本フィルタリングするならまずはサンプル探してHogeが使用されているかチェック
そこで生き残った本からさらに悪本と良書を選別
これが一番効率いい

612 :デフォルトの名無しさん:2013/09/16(月) 20:39:56.76
中卒すら疑われる統計… ニホンゴワカリマスカ?

613 :デフォルトの名無しさん:2013/09/16(月) 20:41:06.93
「このほげぇを関数ほげぇほげぇに渡すと、ほげぇが処理されて、そのアドレスがほげぇほげぇほげぇに入るんだよ」

どう見ても頭悪いだろw

614 :デフォルトの名無しさん:2013/09/16(月) 20:43:03.26
>>612のように反例も挙げずにレッテル貼るのがhoge厨

615 :デフォルトの名無しさん:2013/09/16(月) 20:55:51.17
hogehoge〜

616 :デフォルトの名無しさん:2013/09/16(月) 20:59:26.82
>>614
ハゲがキレてると仮定してhage厨と呼ぼう(提案)

617 :デフォルトの名無しさん:2013/09/16(月) 21:01:23.28
hoge使ってる奴って思考が偏ってるよな。
それが馬鹿に見えるんだと思うけど、馬鹿じゃなくてアスペの一種。

618 :デフォルトの名無しさん:2013/09/16(月) 21:24:12.76
反応しちゃってる方がアスペだろ、どう見てもw

619 :デフォルトの名無しさん:2013/09/16(月) 21:27:53.32
ワロスw

620 :デフォルトの名無しさん:2013/09/16(月) 21:35:56.94
>>614
待て待て、反例じゃなく「確からしさ」だろ円形脱毛症

621 :デフォルトの名無しさん:2013/09/16(月) 21:37:20.57
hogeを使う奴は基地外だから、徹底的に叩いて来ないようにしないと駄目
そうしないとスレが破壊される
ネットでプログラムの説明しているものにhoge使っていたら、そいつは基地外って覚えておくように

622 :デフォルトの名無しさん:2013/09/16(月) 22:28:27.50
hogeは許すが、変数名にhageとかつける奴はぶちころがすぞ

623 :デフォルトの名無しさん:2013/09/16(月) 22:33:45.56
うちの会社の先輩もhoge使ってるよ
















誰にも相手にされてないけどw

624 :デフォルトの名無しさん:2013/09/16(月) 22:41:01.92
日本のITが弱いのはこういうところだろうな
Google、Facebook、Amazon、Yahooに太刀打ちできるところがあるか?

hoge使うような知恵遅れのいる企業は知恵遅れに毒されてるから
イノベーションは起こせない
成功してもmixiやLINEみたいに国内止まり
企業は人間が作るもの、まず人間改革から始める必要がある
Googleに勝ちたかったらまずはhogeとか使ってる百流エンジニアを解雇しろ
それでやっとスタートラインだ

625 :デフォルトの名無しさん:2013/09/16(月) 22:48:10.23
またキチガイが暴れてるのか

626 :デフォルトの名無しさん:2013/09/16(月) 22:50:56.67
>>623
やぁ、知恵遅れ会社のドカタさん

>>624
日本に必要なのはドカタ。知恵遅れのほうが良いんだよ

627 :デフォルトの名無しさん:2013/09/16(月) 22:53:25.22
>>626
ドカタでも自分の頭が悪いのを自覚しているドカタに限るな

頭が悪い癖に「頭がいいんだぞー」アピールしてる馬鹿は一番痛い

628 :デフォルトの名無しさん:2013/09/16(月) 22:58:59.62
土方も死後だろう

629 :デフォルトの名無しさん:2013/09/16(月) 23:07:15.18
ひじかたさん亡き後、俺達はどうすれば...

630 :デフォルトの名無しさん:2013/09/16(月) 23:12:06.79
近藤です

631 :デフォルトの名無しさん:2013/09/16(月) 23:14:48.89
>>628
じゃ、ヨイトマケで

632 :デフォルトの名無しさん:2013/09/16(月) 23:15:48.91
hogeスレ

633 :デフォルトの名無しさん:2013/09/16(月) 23:17:33.81
hogeって語感悪いよね。
なんでわざわざ自分の印象を悪くする単語(?)を使うのか。

634 :デフォルトの名無しさん:2013/09/16(月) 23:23:49.46
少し煽っただけでそんなに元気になるんですか?
ID出なくて良かったですね

635 :デフォルトの名無しさん:2013/09/16(月) 23:35:30.30
アンチHoge原理主義者はそもそも日本語でレスすべきじゃない

636 :デフォルトの名無しさん:2013/09/16(月) 23:38:26.19
アホゲ連盟

637 :デフォルトの名無しさん:2013/09/16(月) 23:41:39.88
hoge叩きする人って単に日本文化が嫌いなだけでしょ。

638 :デフォルトの名無しさん:2013/09/16(月) 23:43:48.92
ああ、鮮人か

639 :デフォルトの名無しさん:2013/09/17(火) 00:11:27.57
hogeが韓国起源だと知らない奴が多いな

640 :デフォルトの名無しさん:2013/09/17(火) 00:15:43.20
韓国ではなく在日の言葉が起源のはず

641 :デフォルトの名無しさん:2013/09/17(火) 00:19:54.57
hogeってどういう意味なの?

642 :デフォルトの名無しさん:2013/09/17(火) 00:34:43.50
>>637「hogeは日本の文化!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!」

643 :デフォルトの名無しさん:2013/09/17(火) 00:40:09.41
hogeは韓国語で仮の名という意味
日本がhogeをパクった

644 :デフォルトの名無しさん:2013/09/17(火) 00:41:53.06
hoge=通名なのか

645 :デフォルトの名無しさん:2013/09/17(火) 00:54:28.04
struct kim {};

646 :デフォルトの名無しさん:2013/09/17(火) 00:57:16.47
本当に滑稽ですね
なにがあったか話せばすっきりするんじゃないですか?

647 :デフォルトの名無しさん:2013/09/17(火) 01:05:02.66
また紀元節か

648 :デフォルトの名無しさん:2013/09/17(火) 01:05:27.15
一時的な関数や変数にUnkoやAhoとよく付けるんだが、
消すの忘れて残してしまったらどうしようと思うw

649 :デフォルトの名無しさん:2013/09/17(火) 01:27:59.56
> hogeを使うことの是非に関する意見はともかく
> C++関連スレでhogeを使うなと騒いでる人の行為を抽象化して客観視すれば
> どういう人であるか、そういう人の行動原理はなにに基づくことが多いかは自然に感じるところがある
>
> ・目標に知らせずに長期にわたって目標の行動を継続的に監視、動きがあれば速やかに反応
> ・目標のなにげない行動一つをきっかけにして、目標やその周囲の反応を無視して自身が満足するまで執拗に行動を続ける
> ・目標の言動を自分に都合よく解釈して目標の人格・思想・感情を決めつけて、目標自身やその周囲から否定されても認識を変えない
> ・行動を糾弾されると理由にならない理由を持ち出して自分の行為の原因は全て目標にあると責任回避・自己正当化

650 :デフォルトの名無しさん:2013/09/17(火) 01:28:17.96
Ahoだとバレるだけだから何の問題もない

651 :デフォルトの名無しさん:2013/09/17(火) 01:38:43.63
>>648
それは恥ずかしいなw
まぁhogeよりはマシだが。

652 :デフォルトの名無しさん:2013/09/17(火) 01:48:31.65
意味不明なHogeとか使うゴミグラマ

653 :デフォルトの名無しさん:2013/09/17(火) 02:27:53.19
一年ぶりに見にきたがhoge嫌いのゴキブリはまだいたのか
hoge入りコードは殺虫剤だから
沢山書いてゴキブリをピクピクさせてやれよ

654 :デフォルトの名無しさん:2013/09/17(火) 02:34:21.12
そもそも
メタ構文変数=命名に意味はない
な訳だから
使い捨てで当事者間の意思疎通が出来ればそれでいいんだよね。
他人から見ればまさにゴミかもしれないが
それが分からない人が無理に価値を見出そうとする必要はないよ。
コイサンマンのコーラ瓶じゃないんだからさ。

655 :デフォルトの名無しさん:2013/09/17(火) 03:12:28.01
>>654
じゃあテメーのオツムの弱い仲間内で使ってろ
人目に触れるところに汚物を出すんじゃねーよボンクラ

656 :デフォルトの名無しさん:2013/09/17(火) 04:00:32.61
>>655
わざわざ(君の認識上では)汚物に粘着してる人に言われましても。

657 :デフォルトの名無しさん:2013/09/17(火) 05:00:30.25
さながらハエだな

658 :デフォルトの名無しさん:2013/09/17(火) 05:12:52.55
ソ連崩壊したろ?北朝鮮がユートピアだなんていったけど嘘だろ?
人間なんて醜いもんだからあんなのは不可能なんだよな。
で、なんだっけ?
あぁそうそうネットな。最近始めたんだよインターネット。
うまく使えば便利だろうなってのは分かっけどよ
慣れるまでは酷いな、ほんとゴミだらけ。
おいらみたいにオツムが強かったりすると
ゴミの中のお宝なんかじゃなく汚物まで拾っちゃうんだよ。
それでぺろっと舐めちゃったりて(笑)
うーん苦い、この人の体調は良くなってるなってバカヤロー
考えもんだよなぁ

659 :デフォルトの名無しさん:2013/09/17(火) 05:33:06.86
何処を縦だ

660 :デフォルトの名無しさん:2013/09/17(火) 05:56:28.16
この流れを見ればhogeとか言ってる奴がおかしいのは分かるけどな

粘着質で非合理的

結局hogeの意味も説明できない

なんかイコール使って意味はないとか言ってるし

説明できないもの使ってんのか

661 :デフォルトの名無しさん:2013/09/17(火) 06:43:26.00
ハゲでハエでどうしようもないな

662 :デフォルトの名無しさん:2013/09/17(火) 06:43:28.78
hogeとかそんなにチョン起源の単語使いたいならkimとかfiとかhyonとか使えばいいんじゃないの。

663 :デフォルトの名無しさん:2013/09/17(火) 06:54:42.91
>>653
ようゴキブリ
1年ぶりの書き込みがそれか
さすがゴキブリw

664 :デフォルトの名無しさん:2013/09/17(火) 07:07:20.20
>>650
Ahoは、実名でいるから、うちの会社ではソースコードなどに名前が登場する
北欧あたりの出身だと聞いた
ただし、読みはエイホ

665 :デフォルトの名無しさん:2013/09/17(火) 07:43:31.84
>>660
意味はないんだよ。
それが定義だからね。
意味付けしたら用途が狭まっちゃうでしょ?

666 :デフォルトの名無しさん:2013/09/17(火) 07:55:35.01
もう相手にすんなよ・・・・

667 :デフォルトの名無しさん:2013/09/17(火) 08:30:44.72
>>660
> 結局hogeの意味も説明できない

なんでも意味を求めるのは異常臭くね?

668 :デフォルトの名無しさん:2013/09/17(火) 09:02:11.28
意味がないなら最初から書かなければいいのに

669 :デフォルトの名無しさん:2013/09/17(火) 09:09:15.41
ウザい氏ね

670 :デフォルトの名無しさん:2013/09/17(火) 09:18:07.28
気違いほげすれ

671 :デフォルトの名無しさん:2013/09/17(火) 09:18:37.33
ところが書かないとコンパイルエラーですやん

672 :デフォルトの名無しさん:2013/09/17(火) 09:32:33.94
>>665
定義?
どこに書いてあんの?

673 :デフォルトの名無しさん:2013/09/17(火) 09:52:21.54
脳内だよ言わせんな恥ずかしい

674 :デフォルトの名無しさん:2013/09/17(火) 10:00:59.42
どっかに定義が書いてないと怖くて使えないのか

675 :デフォルトの名無しさん:2013/09/17(火) 10:14:28.78
怖いとか言い出したぞ

お前が繁華街のど真ん中で野グソしないのは
何かが怖いからなんだな

676 :デフォルトの名無しさん:2013/09/17(火) 10:20:14.62
1流プログラマに近づくほどhogeを使っている率は高い。

677 :デフォルトの名無しさん:2013/09/17(火) 10:30:39.65
 
      ,一-、
     / ̄ l |   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    ■■-っ < んなーこたーない
    ´∀`/    \__________
   __/|Y/\
 Ё|__ | /  |
     | У  |

678 :デフォルトの名無しさん:2013/09/17(火) 11:04:09.54
やっぱC++現役はまだまだ続くか〜。

679 :デフォルトの名無しさん:2013/09/17(火) 19:04:34.97
>>665
だったらimihanaiでいいだろ。

hoge分かるかよ知能障害。

680 :デフォルトの名無しさん:2013/09/17(火) 19:29:24.87
Hoge ← わかる
Fuga ← は?

681 :デフォルトの名無しさん:2013/09/17(火) 19:51:24.48
Hogeが不明でダメだってなら、Foo Barの意味も必要か?
バカか?

682 :デフォルトの名無しさん:2013/09/17(火) 20:00:52.94
(・∀・)ジサクジエーン

683 :デフォルトの名無しさん:2013/09/17(火) 20:12:00.90
>>681
・fooは定着している
・グローバルなレベルで定着しているところに新たに訳の分からないものを持ち出す必要はない
・hogeでもいいじゃないか、そういうエンジニアの間に染み付いた意味不明な発想がガラパゴス化を引き起こしスマホ市場で遅れをとった

684 :デフォルトの名無しさん:2013/09/17(火) 20:16:56.83
随分と楽しそうですね

685 :デフォルトの名無しさん:2013/09/17(火) 20:18:12.41
>>683
日本語しか使われてない掲示板に住み着いておきながら何がグローバル化だ。

686 :デフォルトの名無しさん:2013/09/17(火) 20:22:55.36
>>683
C++でグローバルとな
設計を見なおせ

687 :デフォルトの名無しさん:2013/09/17(火) 20:35:11.63
>685みたいな奴のせいで日本のスマフォは遅れをとったんだろうな。

688 :デフォルトの名無しさん:2013/09/17(火) 20:35:24.53
>>686
ブーメラン

689 :デフォルトの名無しさん:2013/09/17(火) 20:38:44.52
imihamaiでいいんじゃないの

690 :デフォルトの名無しさん:2013/09/17(火) 21:16:12.89
>>685
さらに朝鮮系の住人がほとんどだからな

691 :デフォルトの名無しさん:2013/09/17(火) 21:22:54.02
>>687
意味が分からない

692 :デフォルトの名無しさん:2013/09/17(火) 21:29:35.09
そういやVC++2012では日本語がコードに使えるらしいぞ。

意味無し( int Arg );

なんてどう?w

693 :デフォルトの名無しさん:2013/09/17(火) 21:34:17.47
>>692
もっと前から使えてたよ

694 :デフォルトの名無しさん:2013/09/17(火) 21:36:12.38
#define 整数 int
#define 長い整数 long
#define 短い整数 short
#define 主処理 main
#define 戻り値 return

695 :デフォルトの名無しさん:2013/09/17(火) 21:47:47.99
#define 虚無 void
#define 浮動 float
#define 倍精度 double
#define 自動 auto

696 :デフォルトの名無しさん:2013/09/17(火) 21:50:00.29
引数付マクロ専用識別子として使うとか

697 :デフォルトの名無しさん:2013/09/17(火) 21:54:01.03
#define 構造体 struct
#define さもなくば else
#define 文字 char
#define 定数 const
#define 続行 continue
#define 中断 break
#define クラス class
#define もし if

698 :692:2013/09/17(火) 21:55:43.62
>>693
あ、そうだったの?
失礼w

699 :デフォルトの名無しさん:2013/09/17(火) 21:59:02.90
#define 静的 static
#define 符号付き signed
#define 符号なし unsigned
#define 共用体 union
#define 型定義 typedef

700 :デフォルトの名無しさん:2013/09/17(火) 22:01:11.89
#define ほげ hoge

701 :デフォルトの名無しさん:2013/09/17(火) 22:07:51.97
#define 外部 extern
#define 列挙型 enum
#define 規定値 default

for,do,while,caseはどう訳すか

702 :デフォルトの名無しさん:2013/09/17(火) 22:18:39.23
#define 分岐 switch
#define 場合 case
#define 三項ループ for
#define 条件ループ while
#define ここから do
#define 移動 goto
#define サイズ sizeof

703 :デフォルトの名無しさん:2013/09/17(火) 22:19:38.68
#define 劣等感 complex
#define 債務不履行 default
#define アレ false
#define がっ nullptr
#define 本 this
#define 官 public
#define 煙 short

704 :デフォルトの名無しさん:2013/09/17(火) 22:25:21.01
「日本語C言語規格」ってやつを作るべきでは?

705 :デフォルトの名無しさん:2013/09/17(火) 22:31:23.32
こうだろ
#define 複素数 complex
#define まじ true
#define 嘘 false
#define ヌルポ nullptr
#define これ this
#define 公開 public
#define 保護 protected
#define 私的 private

706 :デフォルトの名無しさん:2013/09/17(火) 22:53:12.67
#define 二股 nested_exception
#define 影武者 double
#define コテカ case
#define スマホ ios
#define 腰巻き array

707 :デフォルトの名無しさん:2013/09/17(火) 22:53:12.73
#define その他 default
#define ヌル NULL
#define 書式出力 printf
#define ファイル FILE
#define フ開く fopen
#define フ閉じる fclose
#define フ読み込む fread
#define フ書き込む fwrite

708 :デフォルトの名無しさん:2013/09/17(火) 23:06:28.02
お前ら、スレを荒らすな
続きはブログでやれ

709 :デフォルトの名無しさん:2013/09/17(火) 23:09:37.88
#define は Bjarne
#define げ Stroustrup

710 :デフォルトの名無しさん:2013/09/17(火) 23:19:36.86
ころすぞ

711 :デフォルトの名無しさん:2013/09/18(水) 00:18:59.37
#include "stdafx.h"
#include <iostream>
using namespace std;

#define メイン int _tmain()
#define 出力 cout
#define 改行 endl

メイン { 出力 << "世界よ、こんにちは" << 改行; }

712 :デフォルトの名無しさん:2013/09/18(水) 00:27:37.09
#define 打つべし list

713 :デフォルトの名無しさん:2013/09/18(水) 00:31:48.67
>>711
そこまでやるなら、” も 「 と 」 を使えるように定義して

714 :デフォルトの名無しさん:2013/09/18(水) 01:00:44.75
>>708
うるさいゴミ

715 :デフォルトの名無しさん:2013/09/18(水) 01:34:22.50
>>710
てめえが氏ね

716 :デフォルトの名無しさん:2013/09/18(水) 02:02:59.69
今日からhogeの代わりにhomuを使うことにした
そうすると、コンストラクタがこうなった

homu::homu();

ほむほむ!(゚∀゚)

717 :デフォルトの名無しさん:2013/09/18(水) 03:27:09.37
new (std::nothrow) pafu;

718 :デフォルトの名無しさん:2013/09/18(水) 07:07:50.70
class ンフ {
ンフ();
};

ンフ::ンフ() {}

719 :デフォルトの名無しさん:2013/09/18(水) 07:48:53.68
beer!beer!

720 :デフォルトの名無しさん:2013/09/18(水) 07:50:41.80
おっ、(アンチhoge)冷えてるか〜?

721 :デフォルトの名無しさん:2013/09/18(水) 19:11:29.82
自演

722 :デフォルトの名無しさん:2013/09/20(金) 16:33:21.40
std::map<char*, int> map;
map["hoge"] = 0;
char keystr[] = "hoge";
map.find(keystr) != map.end();
std::stringを使わない方向でこれを真にしたかったら自分でハッシュテーブル作るしかないですか?

723 :デフォルトの名無しさん:2013/09/20(金) 16:40:54.10
>>722
struct strCompare {
bool operator() (const char* str1, const char* str2) const {
return strcmp(str1, str2) == 0;
}
};

std::map<char*, int, strCompare> map;

724 :デフォルトの名無しさん:2013/09/20(金) 16:50:03.26
return strcmp(str1, str2) < 0;
じゃね

725 :デフォルトの名無しさん:2013/09/20(金) 16:51:33.04
str1とstr2が等しいならば0だからあってるだろ

726 :デフォルトの名無しさん:2013/09/20(金) 16:58:32.79
http://en.cppreference.com/w/cpp/container/map
std::lessがデフォなんだから
それに合わせるのが普通じゃね?

727 :デフォルトの名無しさん:2013/09/20(金) 17:02:56.47
そもそもstd::map<const char *, int>じゃないかと。

728 :デフォルトの名無しさん:2013/09/20(金) 19:14:25.95
>>723
ありがとうございます
こんな方法が用意されていたんですね

729 :デフォルトの名無しさん:2013/09/20(金) 19:42:55.00
いいから二度と来るなよ

730 :デフォルトの名無しさん:2013/09/20(金) 19:43:57.01
mapの比較は等値でなく等価で行うから>>724が正解だかんな
==での比較だと要素の順序付けができなくてまともに動かんぞ

731 :デフォルトの名無しさん:2013/09/20(金) 21:18:38.71
またhoge厨が来てたのか
17時より前に書き込んでるってことはニート確定だな
hoge厨はやっぱり仕事すら見つからないのか

732 :デフォルトの名無しさん:2013/09/20(金) 21:25:11.70
>>731
お前>>722に答えられない癖に悪口だけは達者だな
何のためにム板にいるの?

733 :デフォルトの名無しさん:2013/09/20(金) 22:38:15.27
日本を取り戻すため

734 :デフォルトの名無しさん:2013/09/20(金) 22:40:36.01
(゚Д゚)ハァ?

735 :デフォルトの名無しさん:2013/09/20(金) 22:45:19.88
何でテンプレート引数に変数取れないんだ

736 :デフォルトの名無しさん:2013/09/20(金) 22:50:14.76
テンプレートはコンパイル時の機能だからな

737 :デフォルトの名無しさん:2013/09/20(金) 22:57:38.44
C++って使えない奴なんだな

738 :デフォルトの名無しさん:2013/09/20(金) 22:59:30.05
実行時でいいなら普通に引数で渡せばいい
そんなこともわからないアホには使えない奴だよ

739 :デフォルトの名無しさん:2013/09/20(金) 23:11:49.90
>>735
なんでこんなアホがC++使ってるの

740 :デフォルトの名無しさん:2013/09/20(金) 23:18:20.75
プログラマは底辺職業だからな

741 :デフォルトの名無しさん:2013/09/20(金) 23:34:12.15
職業?
>>722みたいな無職ばっかだよ

742 :デフォルトの名無しさん:2013/09/20(金) 23:36:21.13
スレを見れば底辺だよなって実感するのが、なんと言うか....

743 :デフォルトの名無しさん:2013/09/20(金) 23:37:27.17
>>739
アホだからC++なんだろ

744 :デフォルトの名無しさん:2013/09/20(金) 23:53:21.81
>>743
その通りだな。C++もあほ様用ゆとり言語の仲間ってことだ

745 :デフォルトの名無しさん:2013/09/21(土) 00:00:20.22
これはひどい・・・
735 の時点では、相当に不利な立場での弁護も考えたが
737 で修復不可能にぶっ壊れた

ム板で救急医療現場を目撃するとは・・・

746 :デフォルトの名無しさん:2013/09/21(土) 00:09:26.29
俺735だけど737のレスは違うし
悪かったよ

747 :デフォルトの名無しさん:2013/09/21(土) 00:13:07.54
>>746
馬鹿だと735と737が同じ奴のかきこになるんだよ
よかったなアホで

748 :デフォルトの名無しさん:2013/09/21(土) 00:15:52.86
>>747>>737
そこかしこでひたすら煽ってるニート

749 :デフォルトの名無しさん:2013/09/21(土) 02:33:21.08
自己紹介乙

750 :デフォルトの名無しさん:2013/09/21(土) 02:49:58.28
雑談はマ板行ってこいよ

751 :デフォルトの名無しさん:2013/09/21(土) 02:51:39.33
俺はマ板行くような他の連中とは違うんだ
俺は本当は2ちゃんねらーなんかじゃないんだ
だからマ板で雑談なんかしない人なんだ
だから…だから…

752 :デフォルトの名無しさん:2013/09/21(土) 04:19:11.04
hoge厨がまず出ていくべき

753 :デフォルトの名無しさん:2013/09/21(土) 07:47:27.57
hogeは全スルーでいいだろ。

754 :デフォルトの名無しさん:2013/09/21(土) 08:31:33.48
hoge厨って何?
ピカチュウの親戚?

755 :デフォルトの名無しさん:2013/09/21(土) 09:16:05.74
サトシ「ピカチュウ!100万ボルトだ!」

ピカチュウ「ピカー!」



ニート「ホゲチュウ!Hoge荒らしだ!」

ホゲチュウ「ほげえええええ!」

756 :デフォルトの名無しさん:2013/09/21(土) 09:23:15.33
ウケるwwwwwwwwwwwwwwwwwwwww

757 :デフォルトの名無しさん:2013/09/21(土) 09:27:32.47
底辺

758 :デフォルトの名無しさん:2013/09/21(土) 09:30:16.03
これわおもろいwwwww

759 :デフォルトの名無しさん:2013/09/21(土) 09:33:35.68
>>755
ちょwwwwwwwそれwwwwwwwwwwwwwwwww

760 :デフォルトの名無しさん:2013/09/21(土) 09:40:03.36
草生やしてる奴ら自演だろ・・・

761 :デフォルトの名無しさん:2013/09/21(土) 09:43:21.95
wwwwwwww

762 :デフォルトの名無しさん:2013/09/21(土) 09:46:40.96
ワロスw

763 :デフォルトの名無しさん:2013/09/21(土) 09:57:06.26
朝から盛大に茶吹いたwwwww

764 :デフォルトの名無しさん:2013/09/21(土) 10:04:13.49
ホゲチュウとは、「hoge」を見ると発狂して意味不明の供述をする者のこと

765 :デフォルトの名無しさん:2013/09/21(土) 10:06:31.90
キタコレwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww

766 :デフォルトの名無しさん:2013/09/21(土) 10:09:05.54
>>764
やめてくれw腹いたいwwwwwwwwwww

767 :デフォルトの名無しさん:2013/09/21(土) 10:20:35.61
ホゲチュウは
他人が書くhogeに怒るくせに
いざ怒るとホゲーーって叫ぶんだよな

768 :デフォルトの名無しさん:2013/09/21(土) 10:46:04.01
C++初めて2週間くらいなのですがネットで見つけた
下のテンプレート関数の挙動がわからない。
ここから-----------------------
配列の要素数を返すテンプレート。

template<class T,size_t N>
size_t count(T (&array)[N])
{
return N;
}

使用例:

int array[10];
cout << count(array) << endl;
ここまで------------------------

■今わかっていること
・size_tはtypedefされたunsigned intのこと
・要素数の戻り値はsize_t型
・たぶん(&array)[N]のarrayに配列アドレスが参照渡しされてる。
■わからないこと
・<class T,size_t N>のTって使われてない?のに関数が成功してるのはなぜか?
・size_t NのNは引数として渡してないのになぜ要素数が入っているのか?
・int array[10];のarrayは配列の先頭アドレスとすると、
(&array)[N]に引数として参照渡しされたときイメージとして
(&配列アドレス)[N]となると、配列アドレスのアドレス??ってなんだろう?
という感じでよく分からない。
・count(T (&array)[N])のTってなんの役に立つの?何するものなんでしょうか?
・このテンプレート関数の一連の流れが知りたい

769 :デフォルトの名無しさん:2013/09/21(土) 11:13:39.08
>>768
おまえは簡単なテンプレート関数を先に理解しろ
質問がピンからキリまで全部過ぎる

770 :デフォルトの名無しさん:2013/09/21(土) 11:21:17.91
>>768
arrayがどう宣言されているのか考えろ。

771 :デフォルトの名無しさん:2013/09/21(土) 12:03:08.86
>>768
Tについては、arrayにint配列が入れば下みたいに展開出来るってだけのことだろう
template <size_t N> size_t count(int (&array)[N]) { return N; }
Nは何だろう、こういう書き方できるってくらいしかないかね

772 :デフォルトの名無しさん:2013/09/21(土) 12:10:52.14
Tがintに置換されるってのは仮定として考えてたんですが
そうすると
count(int (&配列のアドレス)[N])
となって
int型の配列のアドレスのアドレスのN番目の要素???
Nって書くと要素数がそのまま入ってくる特殊な文字定数なの??
みたいな頭ぐーるぐるです

773 :デフォルトの名無しさん:2013/09/21(土) 12:18:41.65
まずテンプレートを使わずintで考えてみろ

774 :デフォルトの名無しさん:2013/09/21(土) 12:19:43.70
そもそも基本ができてない

テンプレートは基本の延長でしかないものだから基本とは別のなにか特別のものとして理解しようとすると間違える
>>768のソースは↓と(だいたい)同じものでしかない

size_t count(int (&array)[10])
{
return 10;
}

使用例:

int array[10];
cout << count(array) << endl;

これがどう動くか理解できないなら単純に知識不足

775 :デフォルトの名無しさん:2013/09/21(土) 12:22:40.64
配列の参照をまず理解しろ
↓こういうの

int a[] = {1, 2, 3};
int (&b)[] = a;

std::cout << b[0] << ' ' << b[1] << ' ' << b[2] << std::endl;

776 :デフォルトの名無しさん:2013/09/21(土) 12:24:23.66
template<class T,size_t N> を指で隠して、まず、そっからあとについて納得するんだ

先頭部分をみたとき、脳内で、
「仮にclassなTがあり、size_t なNがあるとき」と読んでいる気がする

777 :デフォルトの名無しさん:2013/09/21(土) 12:26:20.29
>>768
C++ 配列の参照を返す 関数 > google
C++ template count array > google

778 :デフォルトの名無しさん:2013/09/21(土) 12:27:02.97
C++ は、int array[10] だと [10] まで型に含むから。

779 :デフォルトの名無しさん:2013/09/21(土) 12:34:46.34
みんなありがとう

>>775
エラー 1 error C2440: '初期化中' : 'int [3]' から 'int (&)[]' に変換できません。 c:\users\primemr7\desktop\c++\gamelib2008\src\01_firstgame\test2\source.cpp 14 1 test2
とコンパイルがなぜか通りません
コンパイル通らなくてごめんなさい

(&b)[] という表記を始めてみました。
ちょっと調べてみます

>>776
classはtypenameと同じような意味だからTは型名になるんだなって
size_t型のNがたぶん要素数がはいってくるんだろうなあ、、、たぶん
ってかんじです。

>>768
キーワードがまさに知識のカギに・・・
ありがとう。

>>778
配列アドレスだけを送ってるのに要素数までいっちゃうんですね。
初耳でした。

780 :デフォルトの名無しさん:2013/09/21(土) 12:45:03.07
>>779
悪い
配列の次元を指定しないと駄目なんだった

int a[3] = {1, 2, 3};
int (&b)[3] = a;

std::cout << b[0] << ' ' << b[1] << ' ' << b[2] << std::endl;

781 :デフォルトの名無しさん:2013/09/21(土) 13:00:58.19
>>780
cout<<(&b)<<endl;
cout<<(b)<<endl;
をすると同じアドレス値がでました。

これは&をつけてもつけなくてもいいってことかなと思いきや
int (&b)[3] = a;の時は&を消すとエラーになる。

代入の時だけは&をつけるC++の仕様だから暗記しろってことでしょうか???
参照ってわけないし・・・

782 :デフォルトの名無しさん:2013/09/21(土) 13:07:39.58
>>768
>size_tはtypedefされたunsigned intのこと
って正しいの?

>>779
アドレスには純粋なアドレス情報以外のものも関連付けされている
ってC言語で習ったででょ

783 :デフォルトの名無しさん:2013/09/21(土) 13:12:06.68
>>781
参照だよ
Cだってint b[3]=aなんて出来ないでしょ

784 :デフォルトの名無しさん:2013/09/21(土) 13:20:57.58
Cはやったことないです。
JAVAを少しかじった程度です。

なんとなくわかりました。

template<class T,size_t N>
size_t count(T (&array)[N])
{
return N;
}
-------------
・Tはintなどの引数に沿った型名に置換される
・配列の要素数は内部的にsize_t型に定義されてるので
size_t Nと書けば変数Nにsize_t型の要素数がそのまま代入される。
・(&array)は配列の参照なので配列の先頭アドレスが参照としてそのまま
代入される。
・要素数を返すのだから戻り値はsize_tになる。
・size_tは内部的にunsigned intの別名だからint型の変数で受け取れる。

785 :デフォルトの名無しさん:2013/09/21(土) 13:22:14.00
>>782
> >size_tはtypedefされたunsigned intのこと
> って正しいの?
規格上は符号なし整数型のどれかであって常にunsigned intであるという保証は無い

786 :デフォルトの名無しさん:2013/09/21(土) 13:25:25.90
int b[3]=aが駄目な理由って何?
これで初期化、配列コピーでができないってへんな気がするんですけど

787 :デフォルトの名無しさん:2013/09/21(土) 13:35:06.69
>>786
newもしないでそんなことできる言語があるのかと

788 :デフォルトの名無しさん:2013/09/21(土) 13:36:15.91
>>779
アドレスと型で変数。
普通は型を合わせておいて使う所、テンプレートだと型を自由に出来る。
普通のテンプレートだと型も値も両方使うけど、この場合は型しか使ってない。

789 :デフォルトの名無しさん:2013/09/21(土) 13:43:18.94
Javaの参照とC++の参照は別物

790 :デフォルトの名無しさん:2013/09/21(土) 13:57:02.39
そもそもC/C++にはポインタってのがあって

791 :デフォルトの名無しさん:2013/09/21(土) 14:01:16.66
いまさらなんですけど、
---------------------
int a[3] = {1, 2, 3};
int (&b)[3] = a;
---------------------
配列の参照の書き方が
int (&b)[3] = a;
これが正解ってのはわかったんですが
int型の参照は「int&」で配列だから・・・イメージだと
int& b[3] = a;
のが自然な記述方法なんじゃって思うんですけどって
チラ裏だったかな・・・

792 :デフォルトの名無しさん:2013/09/21(土) 14:04:02.88
配列の参照とか使ったことないわ

793 :デフォルトの名無しさん:2013/09/21(土) 14:17:25.59
素直にvector使おうってことで

>>791
int& b[3]じゃint&の配列になっちゃうから、まあそういうもんだと覚えるしか
関数ポインタなんかも変な書き方だね

794 :デフォルトの名無しさん:2013/09/21(土) 14:32:25.11
C++で配列はもうstd::arrayだし 
Cの配列をC++の機能の参照で使うと相性(?)悪くて何これになるよな

795 :デフォルトの名無しさん:2013/09/21(土) 14:39:49.86
>C++で配列はもうstd::arrayだし
ちょっと何言ってるかわからない

796 :デフォルトの名無しさん:2013/09/21(土) 14:45:58.98
生配列って何かの役に立つんだっけ?

797 :デフォルトの名無しさん:2013/09/21(土) 14:53:48.96
>>795
C++11の事を言ってるんじゃねーの
boost::arrayが取り込まれたやつ
クラスだから=でコピーが出来たり、ラムダ式にも使える

しかしtemplateだから動的な確保は出来ないのが残念
効率を重視したんかな

798 :デフォルトの名無しさん:2013/09/21(土) 14:59:39.22
動的にしたらarrayの意味無くなるだろ

799 :デフォルトの名無しさん:2013/09/21(土) 15:00:31.38
vectorでいいわな

800 :デフォルトの名無しさん:2013/09/21(土) 15:10:31.81
>>802
バカはレスしなくていいよ。俺は無能が嫌いなんだ。

801 :デフォルトの名無しさん:2013/09/21(土) 15:13:13.16
>>800
馬鹿・無能丸出し。自己紹介だね

802 :バカ:2013/09/21(土) 15:14:03.11
>>800

803 :デフォルトの名無しさん:2013/09/21(土) 15:17:00.95
>>800

804 :デフォルトの名無しさん:2013/09/21(土) 15:18:52.61
いけない!>>800の頭がスタックオーバーフローしちゃう

805 :795:2013/09/21(土) 15:21:54.28
>>797
C++にstd::arrayが有るのは知っているが
それがどうして「配列はもうstd::array」
になるのかが不明だ。
ちなみに動的についてはC++第4版でdynarrayが
追加される予定の筈。

806 :デフォルトの名無しさん:2013/09/21(土) 15:25:41.41
C++第4版って何だ?

807 :デフォルトの名無しさん:2013/09/21(土) 15:25:45.72
vectorはもう使わない方がええの?

808 :デフォルトの名無しさん:2013/09/21(土) 15:28:57.35
>>805
std::begin()とstd::end()とoperator=とempty()などのメンバ関数が使えて
他のコンテナとの一貫性を保てるって点が大きいんじゃね

809 :795:2013/09/21(土) 15:37:49.72
>>806
ISO/IEC 14882:2014の表紙に
書かれるであろう版数なのだが。
2011には「Third edition」と書いてある。

810 :デフォルトの名無しさん:2013/09/21(土) 15:39:20.09
>>808
実はC/C++は生が良いよいんだよ
生配列、生ポ、文字列char* サイコー!

811 :795:2013/09/21(土) 15:43:19.66
>>808
std::arrayにメリットが有るのは知っているが
それがどうして「配列はもうstd::array」
になるのかが不明だ。
論理的思考のできない人?

812 :デフォルトの名無しさん:2013/09/21(土) 15:47:00.39
生配列のメリットってなんだっけ

813 :810:2013/09/21(土) 15:47:02.26
>>811
メリットあるから、もうstd::arrayで良いよ
じゃ駄目なのか

814 :デフォルトの名無しさん:2013/09/21(土) 15:47:26.21
std::array がある状況下で組み込み配列のほうを選択するべきという場面は半分以下になっている
と言いたいんだろうと思う。

815 :デフォルトの名無しさん:2013/09/21(土) 15:48:55.41
要素数省略したい、ヘッダのインクルードめんどい、ってことで組み込み配列が選択されちゃう
場面は多いんだけどね。

816 :810:2013/09/21(土) 15:52:26.21
>ヘッダのインクルードめんどい
これはどうなんだ

817 :デフォルトの名無しさん:2013/09/21(土) 16:01:01.01
>>816
さすがにないわ

818 :デフォルトの名無しさん:2013/09/21(土) 16:16:22.71
>>811
いや、俺は「配列はもうstd::array」と書いた奴じゃないけど、
生配列も今まで通り使えばいいと思うし

それにstd::arrayのサンプル見てみれば分かると思うけど、美しくない
C++11の二重ブラケットに慣れてしまえばいいんだろうと思うけど
std::initializer_listもあるし

819 :デフォルトの名無しさん:2013/09/21(土) 16:21:23.56
http://cheeerioooo.blogspot.jp/2012/11/stdarraysizeof.html

こういうのがあるからなあ
sizeof()がおかしい

820 :デフォルトの名無しさん:2013/09/21(土) 16:30:53.65
そんなつまらん理由なら行列ライブラリを作るか使えよ

821 :デフォルトの名無しさん:2013/09/21(土) 16:31:40.93
sizeof(クラスのオブジェクト)って何が帰ってくるん?

822 :デフォルトの名無しさん:2013/09/21(土) 16:31:53.77
そもそも何でsizeofが必要なのか疑問だ

823 :デフォルトの名無しさん:2013/09/21(土) 17:50:31.01
メタ情報をあちこちにバラ撒かないで済むのが最大のメリットだよ

824 :デフォルトの名無しさん:2013/09/21(土) 18:28:42.26
std::array<int, 3> arr1 = {1, 2, 3};
int arr2[] = {1, 2, 3};

std::arrayで簡単に要素数省略できたりしないの?

825 :デフォルトの名無しさん:2013/09/21(土) 18:50:50.74
>>824
現状無理
コンストラクタの引数からテンプレートパラメータを導出できるようにしようぜという提案が出てはいるんだけど
注目されてなさそうだから望み薄かな

826 :デフォルトの名無しさん:2013/09/21(土) 20:15:17.37
make_arrayを標準化して
auto arr1 = make_array(1, 2, 3);
で済ませってことになるのはありそうだけどな

827 :無駄を省いてみた。:2013/09/21(土) 20:39:04.07
template<class T,size_t N>size_t count(T(&)[N]){return N;}

828 :デフォルトの名無しさん:2013/09/22(日) 03:25:09.21
>>826
こんな事できるの?

829 :デフォルトの名無しさん:2013/09/22(日) 03:30:10.01
テンプレートの黒魔術で何とかなるらしい

830 :デフォルトの名無しさん:2013/09/22(日) 04:11:11.09
可変長テンプレートでなんだかデッカイモノの大きさをメタれるようになり
autoで得体の知れない詳しく言及したく無いモノを気軽に受け取れるようになり
右辺値参照でなんだかデッカイモノの受け渡し効率が上がる可能性を期待出来る様になったからね

831 :デフォルトの名無しさん:2013/09/22(日) 04:15:40.52
>>830
じゃあmake_arrayの実装教えてよ

832 :デフォルトの名無しさん:2013/09/22(日) 09:25:59.49
Visual C++ 2013RCのVariadic Templatesが
不完全すぎて使い物にならない

833 :デフォルトの名無しさん:2013/09/22(日) 12:15:13.04
>>831
ググれば素直な関数テンプレート版からプリプロセッサ版・TMP版とかわんさとでてくる
ttps://www.google.co.jp/search?q=c%2B%2B+make_array

834 :デフォルトの名無しさん:2013/09/22(日) 12:52:13.39
>>829-830
ありがとう。可変長テンプレート引数か。
C++の魔力がまた一つ大きく増幅したな・・。

835 :デフォルトの名無しさん:2013/09/22(日) 14:43:05.94
>>833
コードがだんだんとキチガイじみてきてるwww

でも今まで出来なかった事が出来るようになるのはいい事だな

836 :デフォルトの名無しさん:2013/09/22(日) 16:05:07.97
>>834
基地コード、C++使いは基地多いからぴったりだろ
基地が多いから、基地コードなっていくんだけどな

837 :デフォルトの名無しさん:2013/09/22(日) 17:21:09.93
template <class... Ts>
T foo(Ts... args)
で、解釈として
<class... Ts> のとらえ方は (class...) Ts なのか class (...Ts)
(Ts... args) のとらえ方は (Ts...) args なのか Ts (...args)
どうなん?

838 :デフォルトの名無しさん:2013/09/22(日) 19:30:17.39
>>730
気付かずにunordered_mapと同じように書いてた
危ないところだった

839 :デフォルトの名無しさん:2013/09/22(日) 19:59:29.62
ムーブセマンティックス面白いな
auto_ptrの概念をクラスやコンテナ全体に広げたような感じ

840 :デフォルトの名無しさん:2013/09/22(日) 21:48:56.01
テンプレートの問題点の一つは、いろいろ弄ってると
なんだか良く分からなくなってくるのに、怖ろしいことに、
望みどおりに動くものが出来てしまうことだと思う
知らんうちに魔法使ってる

あと、C++にありがちなコトだけど、言語自体が面白くて
現実世界のことはどうでも良くなること

意味のあるもの以外は、一切書いてはいけないという
決まりなどないのです

841 :デフォルトの名無しさん:2013/09/22(日) 22:26:21.01
>>840
否定しない

まず、その方向で行けるところまで行ってみてくれ

否定した俺たちの過ちがはっきりするし

842 :デフォルトの名無しさん:2013/09/23(月) 04:26:20.30
なんでも書けてこそのC/C++
そこに、なんとでも、と加わるのか

それにしても、マイペースでやってるアマの俺などはいいが、
プロはどうやって勉強してんのこれ

843 :デフォルトの名無しさん:2013/09/23(月) 04:58:36.62
>>842
使う機能制限すればなんとでもなるんじゃね?

844 :デフォルトの名無しさん:2013/09/23(月) 05:08:52.69
>>842
使わざるを得ない場面で否応なく学ばされる。

845 :デフォルトの名無しさん:2013/09/23(月) 13:19:52.07
すべての機能の概要・使用例だけ覚えるようにして詳細はその機能を使いたくなったときにあらためて勉強する

846 :デフォルトの名無しさん:2013/09/24(火) 01:11:42.48
いつも発見の連続でC++は飽きないぜ。

847 :デフォルトの名無しさん:2013/09/24(火) 04:57:23.05
米国でIT用語を子供に名付ける親が急増 「Google」「Facebook」「Excel」「Hashtag」
http://uni.2ch.net/test/read.cgi/newsplus/1379920551/

848 :デフォルトの名無しさん:2013/09/24(火) 07:13:50.06
すみません
string *str = string::stringWithFormat("My name is %s, age is %d", name, age);
みたいな感じでフォーマットを指定して文字列を作成するにはどうしたら良いでしょう?
調べたらストリーム作って流し込んでstringに変換しろみたいに出てきてそんなバカなと思うのですが

849 :デフォルトの名無しさん:2013/09/24(火) 07:28:10.33
別にバカじゃないと思う
stringはvectorがベースなのでフォーマットなぞなくて当然

850 :デフォルトの名無しさん:2013/09/24(火) 07:28:31.70
>>848
バカなと思うでしょうが、その通りなんです。

851 :デフォルトの名無しさん:2013/09/24(火) 07:34:47.59
std::string str = (boost::format("My name is %1%, age is %2%) % name % age).str();

852 :デフォルトの名無しさん:2013/09/24(火) 07:44:42.84
さすがboostさんはformatも備えてるのか

853 :デフォルトの名無しさん:2013/09/24(火) 08:24:42.05
でもなんか遅いような気がするんだよなあ・・・

854 :デフォルトの名無しさん:2013/09/24(火) 09:11:40.99
速度は実測が基本

855 :デフォルトの名無しさん:2013/09/24(火) 11:43:11.53
>>848
std::ostringstreamを使って

std::ostringstream ostr;
char name[] = "abc";
int age = 20;
ostr << "My name is " << name << ", age is " << age << std::endl;
std::cout << ostr.str();

確かにC#のString.Formatのような物があれば便利だがないし、boostは
lexical_castやformatの内部にstringstreamを使っている例が多くある

C++はストリームとstringを明確に分離したのだと思う
他の言語は結構統合されていて、例えばC++BuilderではUnicodeString().sprintf()なんて
書き方が出来る場合があるが、残念ながら標準C++ではboostなどのライブラリを借りるしかない

856 :デフォルトの名無しさん:2013/09/24(火) 13:06:08.06
C++のfstreamってCに対応するfreadってreadじゃないですか?
なんかfreadはどんな型にでも代入できたけどreadは文字しか駄目なように
改悪されてますよね?
それなので>>を使うしかないですよね?

857 :デフォルトの名無しさん:2013/09/24(火) 13:28:32.30
void*がchar*になっただけで「改悪」なのか?

C言語はvoid*を任意の型へのポインタにキャスト無しで変換出来たが、C++は
キャスト必須となったので別にvoid*でなくても良いって理由だけじゃないのか

858 :デフォルトの名無しさん:2013/09/24(火) 14:06:33.30
やってみれば分かると思うけど
std::int8_t a[4];
fin.read(static_cast<char*>(a));
みたいにやるとcharがsigned charにキャストできないみたいなことが出ます。

859 :デフォルトの名無しさん:2013/09/24(火) 14:18:17.13
int a = 0;

while( a++ < 10) {
 うんたら
}

これ、何回まわりますか?
a++ < 10 の評価は、++ が先? それとも後?

860 :デフォルトの名無しさん:2013/09/24(火) 14:26:26.92
>>859
シーケンスポイントでぐぐりなさい

861 :デフォルトの名無しさん:2013/09/24(火) 14:32:38.76
++a 先
a++ 後
だから10回

862 :デフォルトの名無しさん:2013/09/24(火) 14:41:30.96
配列って0から順番に使っていくと速いらしいじゃないですか?
だから配列の値をバラバラに使うのと配列をソートしてから
使うのは配列の長さがいくつ位からソートした方が早くなりますか?

863 :デフォルトの名無しさん:2013/09/24(火) 14:45:01.15
そういう場合は連想配列を使います

864 :デフォルトの名無しさん:2013/09/24(火) 14:50:51.80
>>858
>static_cast<char*>(a));
>みたいにやるとcharがsigned charにキャストできない

そりゃそこはreinterpret_cast使うとこだからエラーになって当然

865 :デフォルトの名無しさん:2013/09/24(火) 15:13:43.17
>>858
std::uint8_t a[4];
じゃね?

866 :デフォルトの名無しさん:2013/09/24(火) 15:20:14.77
みなさん、ありがとうございます。
streamに流し込んでstringに変換するのが正攻法のようですね。
Boostは取り敢えず置いておいてstream使ってやってみます。

867 :デフォルトの名無しさん:2013/09/24(火) 15:37:54.15
>>864
それはまだやってませんでした。

>>865
それはやっても駄目でした。

868 :デフォルトの名無しさん:2013/09/24(火) 15:46:57.43
わたくしの結論としてはcharとsigned charはキャスト互換性が無いと言うことです。

869 :デフォルトの名無しさん:2013/09/24(火) 15:54:54.82
charはunsignedであってほしかった

870 :デフォルトの名無しさん:2013/09/24(火) 16:10:55.07
>>859
ここは C++ スレ
int a = 0;
ではなく
template <class Int> //...
Int a = 0;
くらいで来い

871 :デフォルトの名無しさん:2013/09/24(火) 19:49:24.05
なぜみんなはCやC++を使ってるんですか
JavaやC#やScalaやそのほかのすばらしい言語を使わないんですか

872 :デフォルトの名無しさん:2013/09/24(火) 20:02:52.12
バイナリ吐けるからかな

873 :デフォルトの名無しさん:2013/09/24(火) 20:17:28.68
言語選べるとかどんなぬるいもの作ってんだよ

874 :デフォルトの名無しさん:2013/09/24(火) 20:26:54.73
>>871
実数演算させるだけなら大差ないけど
整数演算させるとJavaやC#はとろい

875 :デフォルトの名無しさん:2013/09/24(火) 20:31:58.45
>>872
Dもいいでしょ?

876 :デフォルトの名無しさん:2013/09/24(火) 20:50:18.56
>>874
ほぅ、ではその整数演算がとろい
サンプルをうぷして貰えないかね

877 :デフォルトの名無しさん:2013/09/25(水) 01:25:33.91
ふと思ったんだが
本屋で売ってる参考書など見て言語を学ぶ人が多いと思う。
じゃあ、その言語の参考書の著者は何を参考に言語を学んだのだろうか?

878 :デフォルトの名無しさん:2013/09/25(水) 01:46:13.62
>>877
学ぶこと自体なら既存の書籍や外国語の書籍も使うだろうが、
普通ならコンパイラのマニュアルと言語の仕様書と場合によって論文。
だが、HTMLの腐った本で分かるようにマニュアルも仕様書も読まないで解説書籍書くバカも存在するだろう。

879 :デフォルトの名無しさん:2013/09/25(水) 03:23:13.20
テンプレートは便利だなあ
ダック・タイピングみたいなことができるなんて

880 :デフォルトの名無しさん:2013/09/25(水) 08:05:54.88
>>871
素晴らしいかしらんが、俺には過ぎた代物だからなw
C/C++をほぼマスターしてからで遅くはないだろ
アマの俺の答えだ。

そのひとつ前は、C++なんざ俺には過ぎた代物。と思ってたんだが、
C++はCを補完できるからね。これはアリってことにしたよ

881 :デフォルトの名無しさん:2013/09/25(水) 08:33:19.71
C/C++をほぼマスターした、なんて言っててほんとにマスターしてる奴はどのくらい居るんだろう。

882 :デフォルトの名無しさん:2013/09/25(水) 08:33:42.96
>>871
言語を使うのが仕事じゃないから

仕事だと言語に関与している時間より、ドキュメントとかテストしてる時間の方が長いし

883 :デフォルトの名無しさん:2013/09/25(水) 08:45:50.83
>>871
C#も使ってるよ。
というか、最近はWindowsアプリはC#がほとんど。

確かにC#のような言語とかライブラリとか経験するのもいいと思う。
俺も、C#をやったら、それまでC言語ライクでしか書けなかったのがC++でも
本当にオブジェクト指向で書けるようになったし。

884 :デフォルトの名無しさん:2013/09/25(水) 10:15:10.68
const int* hoge = new const int;
vcではできるのにgccでは出来ません。どちらが正しいですか

885 :デフォルトの名無しさん:2013/09/25(水) 10:19:11.66
new constなんて構文ありなのか

886 :デフォルトの名無しさん:2013/09/25(水) 10:26:32.09
>>884
「正しい」とは?

887 :デフォルトの名無しさん:2013/09/25(水) 10:41:24.31
>>886
C++の仕様としてこの構文はリーガルなのか否かっていう要するに>>885な疑問じゃねぇの?

888 :デフォルトの名無しさん:2013/09/25(水) 12:41:08.46
初期値与えないconstなんてどう使うんだ?

889 :デフォルトの名無しさん:2013/09/25(水) 12:43:49.22
>>886
hoge使うようなヴァカにはきくだけ無駄

890 :デフォルトの名無しさん:2013/09/25(水) 12:46:58.43
>>888
初期値入ってるポインタ代入すればいいのでは?

891 :デフォルトの名無しさん:2013/09/25(水) 12:53:12.43
>>884
hogeと打つ暇はあっても自分で調べる暇はないの?
さぞお忙しい生活なんでしょうねw

892 :デフォルトの名無しさん:2013/09/25(水) 12:57:04.68
お前はヒマだな

893 :デフォルトの名無しさん:2013/09/25(水) 13:03:31.92
>>884
標準C++の規格ではconstオブジェクトを初期化子なしで構築できるのはユーザ定義のデフォルトコンストラクタを持つクラスだけ
よってこの場合規格準拠なのはgcc

894 :デフォルトの名無しさん:2013/09/25(水) 13:04:33.35
hogeの何が嫌なのか

895 :デフォルトの名無しさん:2013/09/25(水) 13:14:44.21
>>893
だったら規格のどこに書いてあるか示せよ

896 :KUSO KOTE:2013/09/25(水) 13:24:22.83
たぶん
new-initializerがない場合はdefault-initializeされる(5.3.4p15)
constのdefault-initializeはデフォルトコンストラクターを持つクラス型のみ(8.5p6)

897 :デフォルトの名無しさん:2013/09/25(水) 13:31:14.22
根拠を示す必要は無かった

わかる人・できる人っていうのは新しい知識を得たとき
直接の根拠が無くてもそれまでの知識や直感でそれが正しいか間違ってるかってのはなんとなくわかるものだ
(なにかおかしいと感じてる>>888みたいに)
そのうえで根拠を探すけどそれは確認のためでそういう人は他人から与えられなくても自分で探すから必要ない

一方>>895みたいなわからない人・できない人に知識だけ与えても正しく理解できずに害をもたらすだけだからむしろ与えてはいけなかった

898 :デフォルトの名無しさん:2013/09/25(水) 13:45:26.57
>>897
> わかる人・できる人っていうのは新しい知識を得たとき
> 直接の根拠が無くてもそれまでの知識や直感でそれが正しいか間違ってるかってのはなんとなくわかるものだ

規格的にvalidか
という議論の最中にこういうこと言い出す奴は
プログラマから嫌われるタイプ

899 :デフォルトの名無しさん:2013/09/25(水) 13:55:58.79
直感で規格準拠を判断するとか
底辺は二味以上違うな

900 :デフォルトの名無しさん:2013/09/25(水) 14:21:35.97
hogeスレだから仕方がない

901 :デフォルトの名無しさん:2013/09/25(水) 14:29:05.27
>>884
学習する気のない馬鹿は来なくていいよ。
hogeは知ってても必要な知識はないゴミクズ。

902 :デフォルトの名無しさん:2013/09/25(水) 14:33:02.10
>>898
これは、規格に合っているかという質問への回答はイエスかノーで十分で
貰った情報が確からしければ各々でその蓋然性を高めるために規格書を読めという至極もっともな指摘だろ?
つか>>895の態度では人を利用することしか頭にないと受け取られても自然だろ
それとも今後規格の話が出るたびに[要出典]タグを付けるつもりかよやめてくれよ

903 :デフォルトの名無しさん:2013/09/25(水) 14:53:41.51
またhoge厨か。

904 :デフォルトの名無しさん:2013/09/25(水) 14:59:44.50
>>902
で、各々が規格書上はどうなのかを確認したところ
「規格書上にそのような記載はない」と判断した者と
「規格書上にそのような記載はある」と判断した者とで
意見が割れて、
「ない」の側が「ある」の側に場所を示せと言ったわけだ。
そこに馬鹿が現れて「できるやつは直感でわかる」「規格書は自分で読めばいいんだ」
などと意味不明な供述を繰り返しており、当局は余罪を追求する方針です

905 :デフォルトの名無しさん:2013/09/25(水) 15:02:43.82
>>904
そんなやり取りないよ

906 :デフォルトの名無しさん:2013/09/25(水) 15:22:03.70
>>904みたいなのがhoge厨

907 :デフォルトの名無しさん:2013/09/25(水) 15:25:12.21
糖質こわ

908 :デフォルトの名無しさん:2013/09/25(水) 15:28:04.16
> 「ない」の側が「ある」の側に場所を示せと言ったわけだ。
教えてほしかったら教授料払え。タダで教えてもらえると思うな。

909 :デフォルトの名無しさん:2013/09/25(水) 15:29:51.31
hoge厨884が暴れてんのか

910 :デフォルトの名無しさん:2013/09/25(水) 15:31:57.00
>>905
よく読めよ
書いてるだろうが

911 :デフォルトの名無しさん:2013/09/25(水) 15:41:48.33
決着がつくまでhoge厨とアンチhoge厨の戦いは続く
勝ったものが支配者。必死に戦え
支配者になるためには、C/C++スレの局地戦からほかの言語スレにも戦いを広げたほうが良いぞ

912 :デフォルトの名無しさん:2013/09/25(水) 16:20:24.08
戦い?
hoge厨が基地害ってだけの話なのに戦いもクソもないだろ

913 :デフォルトの名無しさん:2013/09/25(水) 16:22:13.16
アンチhoge厨なんて一匹しかいないと思われ
無視すればいいだけ

914 :デフォルトの名無しさん:2013/09/25(水) 16:42:58.69
1人だけだと思わないと自己を保てないゴミが1匹出現。
hoge厨ってホント妄想でしか喋れないんだな。

915 :デフォルトの名無しさん:2013/09/25(水) 16:54:36.89
1匹みたら30匹はいると思わないとな

916 :デフォルトの名無しさん:2013/09/25(水) 17:09:51.53
hoge厨が30匹もいるのかよwww

917 :デフォルトの名無しさん:2013/09/25(水) 19:27:37.39
アンチhogeはたった1人で何と戦ってるんだろうか

918 :デフォルトの名無しさん:2013/09/25(水) 19:30:41.94
という妄想をするhoge

919 :デフォルトの名無しさん:2013/09/25(水) 19:47:07.08
立場が同じで自演を厭わない人が二人そろえば互いに味方はたくさんオレ正しいと思い込めるんだから安いものです

920 :デフォルトの名無しさん:2013/09/25(水) 21:39:00.33
書いてあればうんこでも食いそうな規格厨といい勝負

921 :デフォルトの名無しさん:2013/09/25(水) 23:45:40.71
>>893
これ2003ではどうなの?

2011年規格ではdefault-initializeがconst時にデフォコンを要求するけど
2003年規格ではその記述がないんだよね

代わりに8.5の9段落目に関連記述があるけど
これは内容的にinitializerのことで
new-initializerには適用されない気がする

922 :デフォルトの名無しさん:2013/09/25(水) 23:54:11.52
規格のバグだろうな
多くの困憊ラベンダがぶちぶち言ってたし

923 :デフォルトの名無しさん:2013/09/26(木) 00:05:05.00
じゃあVisual C++は規格適合ってことで
もともと__cplusplusが199711Lのコンパイラだからなw

924 :デフォルトの名無しさん:2013/09/26(木) 01:51:17.87
>>921
newの仕様5.3.4 new p15のほうで明記されてる

925 :デフォルトの名無しさん:2013/09/26(木) 08:33:54.84
>>923
もともとって一体いつからの話してんのお前

926 :デフォルトの名無しさん:2013/09/26(木) 12:03:06.13
>>925
今だよ
やってみればわかる

あ、いつ「から」だっけ?
VC6 では 1 だね

927 :デフォルトの名無しさん:2013/09/26(木) 12:43:33.54
「もともと」が今とかアホかこいつ

928 :デフォルトの名無しさん:2013/09/26(木) 12:45:50.59
いつからって書いてあんじゃん

929 :デフォルトの名無しさん:2013/09/26(木) 13:16:41.02
今でしょ!

930 :デフォルトの名無しさん:2013/09/26(木) 16:49:06.53
たくさんのクラスから参照されるグローバルスコープのクラスの
インスタンス(変数)名を1文字にするのってどう思う?

具体的には、TData_Globalというクラスのインスタンス名を G にする。
このクラスは別クラスの包含で階層が深くなっていて、Data::G->xxx.yyy.getData()とかいう
使い方をするから、短い変数名にしたいのだけれど。。
よくないとは思いつつ、他の解決法が分からない。

当方C言語経験1年、C++を始めて1ヶ月のど素人です。

931 :デフォルトの名無しさん:2013/09/26(木) 16:53:29.32
AndroidでもRなんてクラスもあるしな
だけど名前空間にいれるなりしろよ

932 :デフォルトの名無しさん:2013/09/26(木) 16:54:03.06
そこでシングルトン

933 :デフォルトの名無しさん:2013/09/26(木) 17:15:35.50
これをGにアクセスしたい全てのクラスに継承させればOK
class Hoge {
protected:
 TData_Global *G;
public:
 Hoge(void) : G(TData_Global::getInstance()) {}
}
/* hoge */

934 :デフォルトの名無しさん:2013/09/26(木) 17:21:49.37
>>925
もともと + 〜だから でなくて
「もともと〜なコンパイラ」+だから だろ
そのぐらいの日本語理解しろ

935 :デフォルトの名無しさん:2013/09/26(木) 17:24:57.91
いちいち書くのめんどいからモノステートを継承する時はあるな

936 :デフォルトの名無しさん:2013/09/26(木) 17:38:06.34
>>933
hoge使いはレベルが高いな

937 :デフォルトの名無しさん:2013/09/26(木) 17:39:59.20
>>933
かっけー

938 :デフォルトの名無しさん:2013/09/26(木) 17:46:48.07
おれならこうする

template<typename T> class Hoge {
protected:
 T &G;
public:
 Hoge() : G(*T::getInstance()) {}
}
/* hoge */

939 :デフォルトの名無しさん:2013/09/26(木) 18:08:14.06
おれならこうする

template<typename T> class Hage final {
protected:
 T &G;
public:
 Hage(T &unko) : G(unko == nullptr ? throw "タヒネ" : unko) {}
}
/* hage */

940 :デフォルトの名無しさん:2013/09/26(木) 18:12:19.18
ありがとうございます。2chへの書込みは初めてで、感無量です。
シングルトンといったデザインパターンは初めて聞きましたが、
実現方法はぐぐってみて少し掴めてきました。ありがとうございます。

以下のような感じですかね。

class TData_Global {
public:
static TData_Global* GetInstance() {
static TData_Global instance;
return &instance;
}

TData_AppSetting appSetting;

private:
TData_Global(){}
TData_Global(const Singleton& rhs);
TData_Global& operator=(const Singleton& rhs);
};

しかし、シングルトンを使ったメリットがよく分かりません。
コンストラクター等を使えなくすることで、
TData_Globalのインスタンスが好き放題生成されずに済む他に
どのようなメリットがあるのでしょうか?
結局アクセスは、TData_Global::GetInstance().appSetting.getData() のような
冗長な形になってしまうのですよね?

それか、TData_Globalを継承して、GetInstance().appSetting.getData()と
するのがベストなのでしょうか?

理解力が無い上、長文で申し訳ございません。。

941 :デフォルトの名無しさん:2013/09/26(木) 18:58:03.58
シングルトンだの継承だの使うまでも無く
素直に長い名前にしといて使うところの前で短い名前の参照で拘束すればいいだろ

942 :デフォルトの名無しさん:2013/09/26(木) 18:58:09.57
よく分らんけど、長いって言うなら
GetInstance().appSetting.getData() をインターフェースに用意すればいいんじゃないのか

943 :デフォルトの名無しさん:2013/09/26(木) 19:01:30.84
真に受けたらいかん
そんなことのために継承すなw

944 :デフォルトの名無しさん:2013/09/26(木) 19:24:50.11
>>940
TDataGlobal* G = TData_Global::GetInstance().って各クラスにGを持てばいいじゃない

945 :デフォルトの名無しさん:2013/09/26(木) 19:55:43.37
>>944
シングルトンにして>>933でいいんじゃね
class UseG {
protected:
 TData_Global* G;
 UseG() : G(TData_Global::GetInstance()) { }
};
class Foo : UseG {
 void Bar()
 {
  G-.>appSetting.GetData();
  ;
 }
};

946 :デフォルトの名無しさん:2013/09/26(木) 20:45:16.57
クラス設計で悩んでる人に安易にシングルトン勧めるなよ
グローバル変数で十分だから

947 :デフォルトの名無しさん:2013/09/26(木) 20:50:26.98
hogeアンチはまだかの?

948 :デフォルトの名無しさん:2013/09/26(木) 20:59:21.81
グローバルよりゃシングルトンの方がマシだろ
褒められたもんじゃないけど

949 :デフォルトの名無しさん:2013/09/26(木) 21:03:19.59
どうマシなんだ?

950 :デフォルトの名無しさん:2013/09/26(木) 21:04:26.78
グローバル変数だと勝手に代入されたりして困る

951 :デフォルトの名無しさん:2013/09/26(木) 21:06:07.25
代入する事を想定してる時点で馬鹿としか

952 :デフォルトの名無しさん:2013/09/26(木) 21:10:06.31
OOPってそんなんばっかでしょ

953 :デフォルトの名無しさん:2013/09/26(木) 21:10:36.99
operator = を user provide していても代入はできるが?

954 :デフォルトの名無しさん:2013/09/26(木) 21:15:09.72
どうしても制限したい場合は、Singleton<class T>やManagerパターンを使う。
明らかにクラずの再利用性を制限するパターンだから、
現代の常識から見れば使うべきでない。
10年以上前の概念だから、こういう事もある。

955 :デフォルトの名無しさん:2013/09/26(木) 21:18:02.83
なんつう変なtypoをしてしまったんだ。
台無しじゃないか。

956 :デフォルトの名無しさん:2013/09/26(木) 21:24:14.08
リング構造と何か違うのか?

957 :デフォルトの名無しさん:2013/09/26(木) 21:34:10.01
見たなー

958 :デフォルトの名無しさん:2013/09/26(木) 21:40:10.57
さっちゃんはねー 貞子っていうんだホントはね

959 :デフォルトの名無しさん:2013/09/26(木) 21:40:51.17
Width と Height

の長さが違って許しがたいんだけどどうすればいい?

960 :デフォルトの名無しさん:2013/09/26(木) 21:41:34.57
>>959
オバマさんに直訴してみれば?

961 :デフォルトの名無しさん:2013/09/26(木) 21:42:51.76
TABで揃えてどうぞ

962 :デフォルトの名無しさん:2013/09/26(木) 21:43:19.41
>>959
フォント変えろ

963 :デフォルトの名無しさん:2013/09/26(木) 21:45:40.17
>>960

久々だよ、こんだけ笑ったの

964 :デフォルトの名無しさん:2013/09/26(木) 21:54:00.02
>>959
wideとhighにすれば

965 :デフォルトの名無しさん:2013/09/26(木) 21:57:45.38
>>940
class TData_Global {
public:
 TData_AppSetting appSetting;
};
template <class T>
class Singleton {
public:
 T* GetInstance();
private:
 T() {}
 T(const T& rhs);
 T& operator=(const T& rhs);
};
template <class T>
T* Singleton<T>::GetInstance()
{
 static T instance;
 return &T;
}
typedef Singleton<TData_Global> Singleton_TData_Global;

966 :デフォルトの名無しさん:2013/09/26(木) 21:59:26.47
Yoko
Tate

967 :デフォルトの名無しさん:2013/09/26(木) 21:59:49.93
シングルトンの方がグローバル変数より多少はマシ
理由は初期化のタイミングを制御できるから

968 :デフォルトの名無しさん:2013/09/26(木) 22:02:01.41
変数ならcx, cy一択なんだけど関数にするとダサい
Size構造体を作ればいいけど

969 :デフォルトの名無しさん:2013/09/26(木) 22:03:47.25
しーぷらすれなのに・・・

970 :デフォルトの名無しさん:2013/09/26(木) 22:06:11.34
生成タイミングはManagerが制御すりゃいいだけ。

971 :デフォルトの名無しさん:2013/09/27(金) 00:44:14.81
>>930
その TData_Global とかいうよくわからん名前がただのノイズにしかなってない気がする。
今あるメンバ関数をただの関数にしちゃえばいいんじゃないの?

Data::G->xxx.yyy.getData()

getGlobalXxxYyyData() とか。
(この例だと globalXxx って変数がグローバルにあればいいのかもしれないけど。)

972 :デフォルトの名無しさん:2013/09/28(土) 01:59:40.84
wxなんかはマクロでやってたな

973 :デフォルトの名無しさん:2013/09/28(土) 10:06:55.48
struct test
{
test* v;
test()
:v(new test)//ハンドルされていない例外
{}
~test()
{delete v;}
};
のようにすると例外が出るのですが、何がいけなかったのでしょうか?

974 :デフォルトの名無しさん:2013/09/28(土) 10:09:16.16
1個作ったら無限に作ってるからな

975 :デフォルトの名無しさん:2013/09/28(土) 10:21:36.59
>>974
無限ループになってたんですね。
自身のコンストラクタ->vのコンストラクタ->vのvのコンストラクタ->.....

:v(new test) -> :v(NULL)にして無限ループ解消して

test t(new test);//自身のコンストラクタでのみnewしておけば大丈夫でした。

976 :デフォルトの名無しさん:2013/09/28(土) 10:32:36.15
不用意にコピーして例外地獄にはまる未来が見えるコードだな

977 :デフォルトの名無しさん:2013/09/28(土) 10:37:33.32
unique_ptrにしとくべき

978 :デフォルトの名無しさん:2013/09/28(土) 11:02:45.95
何がしたいんだw

979 :デフォルトの名無しさん:2013/09/28(土) 11:16:49.00
test::test():v(nullptr){};
test::test(test&a):v(nullptr){a.v=this;} OR
test::~test(){if(v)delete v;}
だろ

980 :デフォルトの名無しさん:2013/09/28(土) 11:24:45.99
test::test(test&a):v(nullptr){test*p=a.v;while(p)p=p->v;p->v=this;} //尻尾齧ってたら脂肪。

981 :デフォルトの名無しさん:2013/09/28(土) 11:54:28.87
>>979
コピーコンストラクタはprivateしておきました。
nullptr C++11ですね。古いコンパイラ使ってたものですみません。
>>977
struct test2{boost::shared_ptr<test2> v;};
のようにして
みましたが、今度はデストラクタでStackOverFlowになるようでした。

test2 t2; t2.v = boost::shared_ptr<test2>(new test2());
test2* next = t2.v.get();
for(int i=0;i<1000;i++){ next->v = boost::shared_ptr<test2>(new test2());
next = next->v.get();}

982 :デフォルトの名無しさん:2013/09/28(土) 14:27:02.40
>>981
お前わかっててやってんだろ

983 :デフォルトの名無しさん:2013/09/28(土) 20:00:04.46


984 :デフォルトの名無しさん:2013/09/28(土) 21:01:06.11
>>981
それは、デストラクタの中でデストラクタ呼び出し->そのデストラクタの中でまたデストラクタ呼び出し->...
という再帰呼び出しのネストが深すぎてスタック食いつぶしてる状態
shared_ptrとは関係なく普通のポインタを使っていても同じ流れの設計なら起きる

985 :デフォルトの名無しさん:2013/09/29(日) 00:37:36.60


986 :デフォルトの名無しさん:2013/09/29(日) 00:43:25.27


987 :デフォルトの名無しさん:2013/09/29(日) 00:46:35.92


988 :デフォルトの名無しさん:2013/09/29(日) 01:12:53.01


989 :デフォルトの名無しさん:2013/09/29(日) 06:02:57.95
ぼくは子どもの頃から素直で物覚えが良くて頭が悪く、まで読んだ

990 :デフォルトの名無しさん:2013/09/29(日) 07:35:00.98


991 :デフォルトの名無しさん:2013/09/29(日) 15:10:20.95
ぼくは子どもの頃から泣き虫で、すぐに泣くこと悲しく情けなくて、なおも泣きました

992 :デフォルトの名無しさん:2013/09/29(日) 15:11:26.05


993 :デフォルトの名無しさん:2013/09/29(日) 15:21:50.61
つまり、いま子どもってわけか

994 :デフォルトの名無しさん:2013/09/29(日) 15:26:14.15


995 :デフォルトの名無しさん:2013/09/29(日) 15:37:41.47
д

996 :デフォルトの名無しさん:2013/09/29(日) 15:54:31.72


997 :デフォルトの名無しさん:2013/09/29(日) 16:29:10.54
ぼくは子どもの頃からホモで

998 :デフォルトの名無しさん:2013/09/29(日) 16:32:13.67


999 :デフォルトの名無しさん:2013/09/29(日) 16:53:23.02
銀河鉄道

1000 :デフォルトの名無しさん:2013/09/29(日) 16:54:49.23


1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

204 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)