■過去ログ置き場に戻る■ 1- 次250 最新50


[memo] "9999999999_00.html#R20" という感じで、URLの最後に "#RレスNo" を追加すると幸せになれます。

C++相談室 part35
1 名前:v(^・^)v :04/08/31 22:16
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
テンプレートライブラリ(STL含む)に関する質問は
専用の別スレにお願いッス。

過去スレ、関連スレ、関連リンクなどは >>2-20 あたり

2 名前:v(^・^)v :04/08/31 22:17
1 http://mimizun.mine.nu:81/2chlog/tech/piza.2ch.net/tech/kako/980/980175292.html
2 http://pc.2ch.net/tech/kako/996/996640937.html
3 http://pc.2ch.net/tech/kako/1003/10038/1003832761.html
4 http://pc.2ch.net/tech/kako/1009/10090/1009071535.html
5 http://pc.2ch.net/tech/kako/1014/10142/1014217496.html
6 http://pc.2ch.net/tech/kako/1018/10184/1018454705.html
7 http://pc.2ch.net/tech/kako/1021/10217/1021787032.html
8 http://pc3.2ch.net/tech/kako/1025/10250/1025010364.html
9 http://pc3.2ch.net/tech/kako/1027/10273/1027347982.html
10 http://pc3.2ch.net/tech/kako/1029/10293/1029315669.html
11 http://pc3.2ch.net/tech/kako/1032/10323/1032345774.html
12 http://pc3.2ch.net/tech/kako/1035/10350/1035005882.html
13 http://pc3.2ch.net/tech/kako/1038/10380/1038031395.html
14 http://pc5.2ch.net/tech/kako/1041/10413/1041328679.html
15 http://pc5.2ch.net/tech/kako/1043/10436/1043605481.html

3 名前:v(^・^)v :04/08/31 22:17
16 http://pc5.2ch.net/tech/kako/1045/10457/1045746245.html
17 http://pc5.2ch.net/tech/kako/1047/10475/1047560042.html
18 http://pc5.2ch.net/tech/kako/1050/10501/1050177746.html
19 http://pc5.2ch.net/tech/kako/1052/10526/1052625846.html
20 http://pc5.2ch.net/tech/kako/1055/10551/1055162298.html
21 http://pc5.2ch.net/tech/kako/1057/10575/1057580107.html
22 http://pc5.2ch.net/tech/kako/1060/10603/1060361082.html
23 http://pc5.2ch.net/tech/kako/1062/10626/1062690663.html
24 http://pc5.2ch.net/tech/kako/1066/10665/1066546387.html
25 http://pc5.2ch.net/tech/kako/1067/10679/1067949669.html
26 http://pc5.2ch.net/test/read.cgi/tech/1070164402/ (迷子)
27 http://pc5.2ch.net/test/read.cgi/tech/1074454641/ (迷子)
28 http://pc5.2ch.net/test/read.cgi/tech/1077985164/
29 http://pc5.2ch.net/test/read.cgi/tech/1082047479/
30 http://pc5.2ch.net/test/read.cgi/tech/1084030770/
31 http://pc5.2ch.net/test/read.cgi/tech/1086185282/
32 http://pc5.2ch.net/test/read.cgi/tech/1088236078/
33 http://pc5.2ch.net/test/read.cgi/tech/1090180012/
34 http://pc5.2ch.net/test/read.cgi/tech/1092018643/

4 名前:v(^・^)v :04/08/31 22:18
■基本■
[C++ FAQ]
 http://www.parashift.com/c++-faq-lite/
 http://www.bohyoh.com/CandCPP/FAQ/ (日本語)
  Cとその仕様を比較しながらの解説なので分かりやすい。
  ***** 質問の前に必ずこの二つに目を通してください *****

[禿 Stroustrup]
 http://www.research.att.com/~bs/
[C++ International Standard]
 http://www.kuzbass.ru/docs/isocpp/
 http://www.kuzbass.ru/docs/ansi_iso_iec_14882_1998.pdf
 http://www.iso.org/iso/en/CatalogueDetailPage.CatalogueDetail?CSNUMBER=38110&ICS1=35&ICS2=60&ICS3=
[JTC1/SC22/WG21 - C++]
 http://std.dkuug.dk/jtc1/sc22/wg21/

[C/C++ Users Journal]
 http://www.cuj.com/
[cppll (ML)]
 http://www.trickpalace.net/cppll/ (日本語)

5 名前:v(^・^)v :04/08/31 22:18
■Books■
amazon.com C,C++関連書籍
 http://www.amazon.com/exec/obidos/tg/browse/-/3956/ref=br_bx_c_1_3/

The C++ Programming Language
 http://www.amazon.com/exec/obidos/ASIN/0201700735/
 http://www.amazon.co.jp/exec/obidos/ASIN/475611895X/ (翻訳)
C++ Primer (3rd Edition)
 http://www.amazon.com/exec/obidos/ASIN/0201824701/
 http://www.amazon.co.jp/exec/obidos/ASIN/4756140068/ (翻訳)
The C++ Standard Library
 http://www.amazon.com/exec/obidos/ASIN/0201379260/
 http://www.amazon.co.jp/exec/obidos/ASIN/4756137156/ (翻訳)
Effective C++
 http://www.amazon.com/exec/obidos/ASIN/0201924889/
 http://www.amazon.co.jp/exec/obidos/ASIN/4756118089/ (翻訳)
More Effective C++
 http://www.amazon.com/exec/obidos/ASIN/020163371X/
 http://www.amazon.co.jp/exec/obidos/ASIN/4756118534/ (翻訳)
Exceptional C++
 http://www.amazon.com/exec/obidos/ASIN/0201615622/
 http://www.amazon.co.jp/exec/obidos/ASIN/4894712709/ (翻訳)
More Exceptional C++
 http://www.amazon.com/exec/obidos/ASIN/020170434X/
Effective STL
 http://www.amazon.com/exec/obidos/ASIN/0201749629/
 http://www.amazon.co.jp/exec/obidos/ASIN/4894714108/ (翻訳)
Modern C++ Design
 http://www.amazon.com/exec/obidos/ASIN/0201704315/
 http://www.amazon.co.jp/exec/obidos/ASIN/4894714353/ (翻訳)
C++ Templates
 http://www.amazon.com/exec/obidos/ASIN/0201734842/

6 名前:v(^・^)v :04/08/31 22:19
■Libraries■
[Boost]
 Boost http://www.boost.org/
 (日本語) http://user.ecc.u-tokyo.ac.jp/~s31552/wp/boost/
 (日本語) http://www.kmonos.net/alang/boost/
[STL]
 STLport http://www.stlport.org/
 SGI-STL http://www.sgi.com/tech/stl/
 STLFilt http://www.bdsoft.com/tools/stlfilt.html
 (日本語) http://www005.upp.so-net.ne.jp/episteme/html/stlprog/
 (日本語) http://www.wakhok.ac.jp/~sumi/stl/
[Loki]
 http://www.moderncppdesign.com/
 LokiPort-MSVC7 http://www.geocities.com/rani_sharoni/LokiPort.html
 LokiPort-MSVC6sp5 http://fara.cs.uni-potsdam.de/~kaufmann/?page=lokiport
[他]
 ACE http://www.cs.wustl.edu/~schmidt/
 Blitz++ http://www.oonumerics.org/blitz/
 flex++ Bison++ http://www.idiom.com/free-compilers/TOOL/BNF-15.html
[他ライブラリリンク集]
 http://www.trumphurst.com/cpplibs/cpplibs.phtml
 (日本語) http://www.kmonos.net/alang/cpp/lib.html

7 名前:v(^・^)v :04/08/31 22:19
■関連スレ■
【C++】template 統合スレ -- Part5
http://pc5.2ch.net/test/read.cgi/tech/1091522597/
C/C++の宿題を片づけ作戦指令 30代目
http://pc5.2ch.net/test/read.cgi/tech/1091954342/
C/C++でのWindowsPrograming議論スレ(質問お断り)
http://pc5.2ch.net/test/read.cgi/tech/1049790146/
managed C++ やろうぜ!!
http://pc5.2ch.net/test/read.cgi/tech/1014486422/
ATL 相談室
http://pc5.2ch.net/test/read.cgi/tech/1029029882/
COM の世界を斬る!
http://pc5.2ch.net/test/read.cgi/tech/981823340/
WTLお勉強スレッド
http://pc5.2ch.net/test/read.cgi/tech/1078150663/

8 名前:デフォルトの名無しさん :04/08/31 22:24
■コンパイラスレ■
タダで最強!フリーC/C++コンパイラ
http://pc5.2ch.net/test/read.cgi/tech/1035882599/(html化待ち)
GCCについて part3
http://pc5.2ch.net/test/read.cgi/tech/1072484422/
タダで使えるVisual C++ $2
http://pc5.2ch.net/test/read.cgi/tech/1086287039/
タダで使えるBorland C++ Part3
http://pc5.2ch.net/test/read.cgi/tech/1054390397/
OpenWatcom C++
http://pc5.2ch.net/test/read.cgi/tech/1033433728/
"Code of the Nerds" Digital Mars C/C++
http://pc5.2ch.net/test/read.cgi/tech/1044210976/

9 名前:デフォルトの名無しさん :04/08/31 22:24
■開発環境スレ■
★初心者にVisual C++を教えるスレ★ Part13
http://pc5.2ch.net/test/read.cgi/tech/1089011118/
■MFC相談室 mfc11.dll■
http://pc5.2ch.net/test/read.cgi/tech/1088084875/
C++Builder相談室 Part10
http://pc5.2ch.net/test/read.cgi/tech/1089299158/
Borland C++ BuilderX
http://pc5.2ch.net/test/read.cgi/tech/1065260556/

↓以下、お決まりのアレどうぞ。

10 名前:デフォルトの名無しさん :04/08/31 22:24
続きはろうか

11 名前:v(^・^)v :04/08/31 22:25
■開発環境スレ■
★初心者にVisual C++を教えるスレ★ Part14
http://pc5.2ch.net/test/read.cgi/tech/1093672937/
■MFC相談室 mfc11.dll■
http://pc5.2ch.net/test/read.cgi/tech/1088084875/
C++Builder相談室 Part10
http://pc5.2ch.net/test/read.cgi/tech/1089299158/
Borland C++ BuilderX
http://pc5.2ch.net/test/read.cgi/tech/1065260556/

12 名前:v(^・^)v :04/08/31 22:25
STLつかうと一気に実行ファイルサイズが10倍に?!

13 名前:1,11 :04/08/31 22:25
遅れた_| ̄|○

14 名前:v(^・^)v :04/08/31 22:26
>>12
環境によるだろ。
俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力
ランタイムを使用するようにして使っているが、例えばstd::vectorを
使っても使わない時と比べ10Kほどしか増えない。

15 名前:v(^・^)v :04/08/31 22:26
>>14
すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。

16 名前:デフォルトの名無しさん :04/08/31 22:26
スマン。最新のスレじゃなかった。_| ̄|○

カコログカラ ソノママ モッテキチャッタヨ…

17 名前:v(^・^)v :04/08/31 22:27
C1010: プリコンパイル済みヘッダーの検索中に予期しない EOF を検出しました。
とかいうエラーが出るんだけどこれってどうすればいいの?

18 名前:v(^・^)v :04/08/31 22:27
>>17
#include <stdafx.h>

後死ね。

19 名前:デフォルトの名無しさん :04/08/31 22:28
>>18
言葉が悪いな。それで教えているつもりか。
まぁヒントぐらいにはなったな。
うむごくろう。

20 名前:デフォルトの名無しさん :04/08/31 22:30
完了だな

21 名前:デフォルトの名無しさん :04/09/01 00:32
>>20
つまり

     ∧∧     _ ドスッ
     (   ,,)┌─┴┴─┐
    /   つ.  終  了 │
  〜′ /´ └─┬┬─┘
   ∪ ∪      ││ 
            ゛゛'゛'゛
                   ということだな?

22 名前:デフォルトの名無しさん :04/09/01 05:23
どっちが本家?

23 名前:デフォルトの名無しさん :04/09/01 08:57
行列計算用のライブラリで計算速度が速く使いやすいおすすめのものがあれば
紹介していただけないでしょうか?

24 名前:前スレより :04/09/01 09:18
996 名前: デフォルトの名無しさん [sage] 投稿日: 04/08/31 20:08
 namespaceってウンコだよね。
 ライブラリ作ってる香具師がバカだとglobal namespaceになんでも詰め込みやがるから、
 こっちで
 namespace UnkoLib
 {
  #include <library.h>
 }
 とかやってもうまく動かないし。


1000 名前: デフォルトの名無しさん [sage] 投稿日: 04/08/31 21:05
 >>996
 その場合ライブラリ作ってる香具師がウンコだよ。

25 名前:デフォルトの名無しさん :04/09/01 09:28
>>23
これも新しい地鎮祭の儀式?

26 名前:名無しさん@ピンキー :04/09/01 09:42
>>23
boost::ublas
Blitz++
lapack

27 名前:名無しさん@ピンキー :04/09/01 09:43
あれ?もしかして俺思いっきり釣られた?

28 名前:デフォルトの名無しさん :04/09/01 09:44
つーかなんでハンドルがピンキーになってるんだよ?ゾヌのバグか?

29 名前:デフォルトの名無しさん :04/09/01 09:45
漏れは、未だかつて名前衝突を経験したことがない。
名前重複する関数がヘッダーにソースごと貼ってあったら、
それをコピペして関数名変えて使ってしまうし。

名前空間が入り乱れた状態を経験した人って、
さぞや大きなプロジェクトに携わってるんだろうなぁ。
是非、そのエピソードを披露して頂きたいものだ。

30 名前:デフォルトの名無しさん :04/09/01 10:04
std::pairってよく使いますか?
たとえば、ストリームから整形しながら文字列を読むメソッドを作って、
文字列と読み込んだバイト数をpairでパックして返してるんですが、
mapの内部用クラスだから、直接使うべきじゃないとか言われたんですよ。

オブジェクトと付加情報を返したいときって、やっぱり汚くても引数で返すのがいいんでしょか?

31 名前:デフォルトの名無しさん :04/09/01 10:09
>>30
そんな事ない。
本当に内部用クラスなら公開されてないし。
むしろ、std::pair使用時の一時オブジェクトのコピーコンストラクタの冗長性の有無を気にした方がいい。

32 名前:デフォルトの名無しさん :04/09/01 10:48
あるfloat値x、y、zがあって、これらが-1.0f〜1.0fの値域にあるかないか判定したいとします。
普通に組むとこうなると思うんですが、
if( x <= -1.0f && x >= 1.0f &&
y <= -1.0f && y >= 1.0f &&
z <= -1.0f && z >= 1.0f)
bHit = true;

野生の勘ですが、もっと最適化出来るような気がしてなりません。
どうでしょうか?


33 名前:32 :04/09/01 10:50
不等号が逆でした、失礼しました。

34 名前:デフォルトの名無しさん :04/09/01 11:07
>>32
最適化じゃないけど、普通こう書くんじゃないかなぁ。

bHit |= ( x <= -1.0f && x >= 1.0f &&
y <= -1.0f && y >= 1.0f &&
z <= -1.0f && z >= 1.0f);


35 名前:デフォルトの名無しさん :04/09/01 11:19
x*x <= 1.0f && y*y <= 1.0f && z*z <= 1.0f

36 名前:デフォルトの名無しさん :04/09/01 11:35
#define FABS(x) ( *(int32_t*)&x & ~(1<<31) )
if (FABS(x) < 1.0f && FABS(y) < 1.0f && FABS(z) < 1.0f)
 bHit = true;

37 名前:デフォルトの名無しさん :04/09/01 11:39
C99ならfabsfがあるだろ

38 名前:デフォルトの名無しさん :04/09/01 11:42
&&より&のほうが速くなるんじゃないかとおもいます

39 名前:デフォルトの名無しさん :04/09/01 11:46
>>37
最適化っつーんで、あえて最上位ビット反転を明示させるために書いてみただけ。

40 名前:デフォルトの名無しさん :04/09/01 11:57
【テスト内容】
double x, y, z;
for(x=1.1, y=1.1, z=1.1;x<10000000.0; x+=0.01){
 if( 条件式 ){
  cout << "OK" << endl;
 }
}
上記コードで、>>32,>>35,>>36を試した。>>36はcmathのfabs()を用いた。
使用環境はVC6.0。

【結果】
[単位=秒]
   1回目  2回目
>>32 2.156  2.14
>>35 2.125  2.141
>>36 8.375  8.484

【評価】
>>35は条件の範囲が正負で違う場合に修正が面倒。
>>36のfabs()は論外。素直に>>32を使ってよいかと。

41 名前:デフォルトの名無しさん :04/09/01 12:06
>>40
なんでfabs()使うの?

42 名前:40 :04/09/01 12:18
>>41
ご要望に答えて>>36のマクロでやってみた。但し、以下のようにintを使った。
#define FABS(x) ( *(int*)&x & ~(1<<31) )

【結果】
>>32 2.14
>>35 2.141
>>36(fabs) 8.5
>>36(FABS) 8.031

【評価】
>>36のFABS(x)はfabsより若干速い。
あいかわらず>>32最強かと。

43 名前:デフォルトの名無しさん :04/09/01 12:21
たぶん何も考えずに書いたコードの方がコンパイラも最適化しやすいのだろう。

44 名前:デフォルトの名無しさん :04/09/01 12:25
そんな結果になるわきゃないと思うけどな…

45 名前:36 :04/09/01 12:28
>>42
確かに遅くなった。
FPUとALUのレジスタが違うから、メモリアクセスが頻発してるんだね。

46 名前:デフォルトの名無しさん :04/09/01 12:29
>>40
CPUによっても違うんじゃないか?
P4系の浮動小数点ユニットはやたらとストールするからなぁ。

47 名前:デフォルトの名無しさん :04/09/01 12:30
ちゅうか>>40のテスト内容ってどういうこと?

48 名前:デフォルトの名無しさん :04/09/01 12:33
Athlon64とかでやってくれない誰か?Intelは一次キャッシュのポートが一つ
しかなく同時に読み書きできないしFPUは貧弱だしで公平な比較ができん。
と言ってもデファクト・スタンダードがIntelというなら構わんけど。

49 名前:デフォルトの名無しさん :04/09/01 12:33
>>47
少し変だよね

50 名前:40,42 :04/09/01 12:33
>>44>>46
当方の環境は、WinXP Pen4-3.0GHz HTオン。
VC6.0なので>>46の指摘が、気になるちゃぁ気になる。
VC++Toolkitあるけど、やる気なし。スマソ。

51 名前:32 :04/09/01 12:35
お答えありがとうございます!
>>32が最強なんて意外です。つーか超勉強になりました。

>>40
fabsは確か組み込み関数の最適化フラグがありましたよね、
また&&と&の違いも気になりますね。

52 名前:デフォルトの名無しさん :04/09/01 12:42
>>48
x86系+VC6が条件なら変わらないだろ

53 名前:デフォルトの名無しさん :04/09/01 12:45
こういう簡単な比較が一番CPUのアーキテクチャによる差が出るんだよな。
俺もP4とAthlon系で随分と傾向が違うのを嫌ほど見てきた。

54 名前:40,42 :04/09/01 12:45
>>49
感謝されてなんですが、>>47の指摘を受けて、ループを変えました。

for(x=1.1, y=1.1, z=1.1;x<10000000.0; x+=0.01){

for(x=1.1, y=1.1, z=1.1;x<1000000.0; x+=0.01, y+=0.01, z+=0.01){

結果が激変したわけで・・・・。
>>32     0.89
>>35     0.828
>>36fabs  0.813
>>36FABS 0.812

なんか、FABSマクロの挙動が可笑しい(x,y,z=1.25)。調べる気ゼロ。
間違ってるとかない?

【結果】
>>32は最下位転落。残念。

55 名前:40,42 :04/09/01 12:49
&&連結なので、xだけ判定して、残りy,zを判定せずに処理したことが原因でしょう。
>>52さん、ぬか喜びさせてすみませんでした。藁って許してね。

56 名前:デフォルトの名無しさん :04/09/01 12:53
>>54
君の環境で最下位だからといって(ry

57 名前:55 :04/09/01 12:53
>>52じゃなくて>>51さんへのレスでした。やばい、漏れテンパッてる。
でもテストは真っ当なものです。信じてちょ。

58 名前:デフォルトの名無しさん :04/09/01 12:53
> なんか、FABSマクロの挙動が可笑しい(x,y,z=1.25)

doubleのままあのマクロを使ってたりして

59 名前:デフォルトの名無しさん :04/09/01 13:03
x, y, zがどれぐらいの割合で、-1〜1の範囲に収まるかによっても結果が違うよね。
最初のx >= -1の条件でほとんどはじかれるようなら、>>32が最速だろうし
ほとんど最後の条件まで判定するようなら他のだろうし。

x, y, zがよっぽど偏ってない限り、小細工はいらないと思うけどね…。

60 名前:40,42 :04/09/01 13:07
>>58
もちろん、doubleのまま。やっぱ駄目かね。薄々気付いてたけど。
sizeof(double)=8 sizeof(float)=4 sizeof(int)=4 だね、Win32。

んじゃ、doubleをfloatにして試してみるか・・・。ループ変更
for(x=1.1f, y=1.1f, z=1.1f;x<250000.0f; x+=0.01f, y+=0.01f, z+=0.01f){
でやってみた。


【結果】
0.218
0.188
0.172
0.187

【評価】
cmath のfabsが最強ですた。
FABSマクロも正常稼動。
もう勘弁して下さい。(涙

61 名前:40,42 :04/09/01 13:18
今度こそ、ファイナル!
>>59の指摘をうけて、ちゃんと条件領域を通過するようにした。

#define LIMITER2.0f
#define DELTA0.0000001f
#define LOOP()for(x=-LIMITER, y=-LIMITER, z=-LIMITER;x<LIMITER; x+=DELTA, y+=DELTA, z+=DELTA)
で、実際のコードは以下のような使い回し。

float x,y,z;
LOOP(){
 if( 条件式 ){
 // なんらかの処理(低負荷)
 }
}

【結果】
0.391
0.312
0.297
0.141

【評価】
FABSマクロが最強。
自分のことさえ信じられない。もう勘弁。

62 名前:デフォルトの名無しさん :04/09/01 13:22
Cスレ逝ってやれYO

63 名前:40,42 :04/09/01 13:28
>>62
もう止めたから安心してくれ。>>59がFAかな。

64 名前:32 :04/09/01 13:28
>>40
自分もやってみました!

【式】
timer.Start();
for( x=-10000.0 , y=-10000.0, z=-10000.0; x<=10000.0; x+=0.01, y+=0.01, z+=0.01)
{
if( なんらかの式)bHit = true;
}
timer.Stop();
stream << "なんらかの式 : " << timer.GetLatestSecond() << endl;

【結果】
x <= -1.0 && x >= 1.0 && y <= -1.0 && y >= 1.0 && z <= -1.0 && z >= 1.0 : 0.000994819
x <= -1.0 & x >= 1.0 & y <= -1.0 & y >= 1.0 & z <= -1.0 & z >= 1.0 : 0.00571274
x * x <= 1.0 && y * y <= 1.0 && z * z <= 1.0 : 0.00557529
fabs(x) < 1.0f && fabs(y) < 1.0f && fabs(z) < 1.0f : 0.00560937
FABS(x) < 1.0f && FABS(y) < 1.0f && FABS(z) < 1.0f : 0.00557557
x <= -1.0 && x >= 1.0 && y <= -1.0 && y >= 1.0 && z <= -1.0 && z >= 1.0 : 0.00567754
x <= -1.0 & x >= 1.0 & y <= -1.0 & y >= 1.0 & z <= -1.0 & z >= 1.0 : 0.00583258
x * x <= 1.0 && y * y <= 1.0 && z * z <= 1.0 : 0.00557613
fabs(x) < 1.0f && fabs(y) < 1.0f && fabs(z) < 1.0f : 0.00577951
FABS(x) < 1.0f && FABS(y) < 1.0f && FABS(z) < 1.0f : 0.00604825

【評価】
自分の結果だと>>32がダントツでトップになりました。残りは誤差程度の差に収まってしまいました。
&&と&ですが、これは&&の方が早いようです。理由は>>59さんの指摘によるものだと思います。
&& : 0.000994819
& : 0.00571274

65 名前:あっちの住人 :04/09/01 13:32
>>62
死ね

66 名前:デフォルトの名無しさん :04/09/01 13:32
相変わらず不等号が逆だな

67 名前:32 :04/09/01 13:34
>>64は間違ってます・・信用しないで下さい・・
逝ってきます失礼しました・・

68 名前:40,42 :04/09/01 13:37
無駄に疲れた。
このアフォな労力は一体・・・。

>>65
漏れは、素直に>>62に謝りたい。関係ない人には不快だったかも。

>>66
漏れは、不等号をちゃんと修正してやってますた。

69 名前:デフォルトの名無しさん :04/09/01 13:38
>>65
お前が氏ね

70 名前:あっちの住人 :04/09/01 13:40
Cスレに誘導するなという意味なんだが。

71 名前:デフォルトの名無しさん :04/09/01 13:58
FABSが最強に遅いです。なんか定説が覆された感じです。

72 名前:デフォルトの名無しさん :04/09/01 14:02
メモリアクセスが発生するから

73 名前:デフォルトの名無しさん :04/09/01 14:06
*(int32_t*)&x

74 名前:デフォルトの名無しさん :04/09/01 16:33
遅レス失礼

>>30
>mapの内部用クラスだから、直接使うべきじゃないとか言われたんですよ。
std::pairはちゃんと公開されています.対応するヘッダは<utility>になります.

75 名前:デフォルトの名無しさん :04/09/01 16:50
みなさん、処理速度について質問する時は、
質問前に自分で計時測定しましょう。論より証拠です。

76 名前:デフォルトの名無しさん :04/09/01 16:52
age

77 名前:デフォルトの名無しさん :04/09/01 16:56
>>75
最低でもOSとハードウェア構成は暗黙の内に初めから書いて欲しい。
そうでないとベンチマークテストなんて何の意味がある?

78 名前:デフォルトの名無しさん :04/09/01 16:57
コンパイラもね

79 名前:デフォルトの名無しさん :04/09/01 17:02
リンカは?

80 名前:デフォルトの名無しさん :04/09/01 18:47
コンパイルオプションは?

↓っじゃ次の質問どぞ。

81 名前:デフォルトの名無しさん :04/09/01 20:13
あるfloat値xがあって、これらが0.0f〜1.0fの値域にクランプしたいのですが。
普通に組むとこうなると思うんですが、
if(x<0)x=0;
else if(x>1)x=1;

野生の勘ですが、もっと最適化出来るような気がしてなりません。
どうでしょうか?

82 名前:デフォルトの名無しさん :04/09/01 20:23
>>81
x<0になる頻度とx>0になる頻度のどちらが多いかで順番を決める…くらい?

83 名前:デフォルトの名無しさん :04/09/01 21:39
>>81
君の野生の勘は、残念ながら大した事ないようだね。

終了

84 名前:デフォルトの名無しさん :04/09/01 21:49
やっぱお前らには思いつかないか

85 名前:デフォルトの名無しさん :04/09/01 22:04
浮動小数点にCMOVccみたいのはないのか。
アセンブラスレ向けのネタだな。

86 名前:デフォルトの名無しさん :04/09/01 22:16
Hacker's delightになんか書いてなかった?
漏れはfloating使わないからその章は飛ばしちゃった。


87 名前:デフォルトの名無しさん :04/09/01 22:16
そもそもC++ネタじゃないし。

88 名前:デフォルトの名無しさん :04/09/01 22:35
アセンブラなら分岐なしで書けるYO!

89 名前:デフォルトの名無しさん :04/09/02 00:53
コンストラクタを書いたクラスを配列で動的に確保したいので,
思いつきで次のように書いたのですが
newのところでコンパイラに弾かれてしまいます.
これもダメなのでしょうか?

HogeClass *myhoge;
myhoge = (HogeClass *)malloc(sizeof(HogeClass) * 10);
myhoge[0] = new HogeClass(hikisu);
myhoge[1] = new HogeClass(hikisu);
・・・

環境はBCB6.0です.




90 名前:デフォルトの名無しさん :04/09/02 00:56
vector<HogeClass*> に入れれ

91 名前:デフォルトの名無しさん :04/09/02 00:57
HogeClass** myhoge = new HogeClass*[10];
myhoge[0] = new HogeClass(hikisu);
myhoge[1] = new HogeClass(hikisu);
・・・

92 名前:デフォルトの名無しさん :04/09/02 00:59
>>89
エラーメッセージ読め。
それでわかんなかったらエラーメッセージ貼れ。

93 名前:89 :04/09/02 01:11
>>91さんの方法で動きましたが,
>>90さんの方法も後で試してみたいと思います.
ありがとうございました.


94 名前:90 :04/09/02 02:01
>>93

どうしてスマートな方法を採用しないんだろう

95 名前:デフォルトの名無しさん :04/09/02 02:14
>>94
まずコピペして試すからだろう。
↓これなら採用されたかもな。

#include <vector>

std::vector<HogeClass*> myhoge(10);
myhoge[0] = new HogeClass(hikisu);

96 名前:デフォルトの名無しさん :04/09/02 03:34
関数(への参照)を引数にして関数を呼び出すときに関する質問です。
ソースは↓です。

#include <iostream>

void g(double &a, double b, double (&f)(double d) ) { a=f(b); }

double k(double p) { return 5.0*p; }

class C
{
public:
C(double y): x(y) {}
double m(double p) { return x*p; }
private:
double x;
};


int main()
{
C c(10.0);
double z;
g(z, 3.0, k); // (#1a)
cout << z << endl ; // (#1b)
// g(z, 3.0, c.m); // (#2a)
// cout << z << endl; // (#2b)
return 0;
}


97 名前:96 :04/09/02 03:39
>>96 のプログラムでは (#1a) のように関数を引数として計算し、
(#1b) では 30.0 という望みの出力が得られます。

これをクラス中の関数にも適用できるようにしたいのですが、
単純に (#2a) のようにやったのでは
not maches converting function 'm' to type 'double (&)(double)'
というエラーが出ます。
これをクラス内で定義された関数を引数としても動くようにする方法をご教授ください。

なお、コンパイラは g++ 2.95 です。

98 名前:96 :04/09/02 03:40
失礼、(#1b) で得られる出力は 15.0 です。
(#2b) で得たい出力が 30.0 です。
すみません。

99 名前:デフォルトの名無しさん :04/09/02 08:40
>>97
あなたのいう「クラスの中の関数」をC++ではメンバ関数と言う。
まず、メンバ関数への参照という型は存在しない。
でもメンバ関数へのポインタという型がある。
で、メンバ関数へのポインタは非メンバ関数へのポインタとはだいぶ扱いが違う。
ttp://www.google.co.jp/search?q=%E3%83%A1%E3%83%B3%E3%83%90%E9%96%A2%E6%95%B0+%E9%96%A2%E6%95%B0%E3%83%9D%E3%82%A4%E3%83%B3%E3%82%BF

100 名前:96 :04/09/02 11:23
>>99 さん、ありがとうございます。

メンバ関数版をテンプレートで作り、非メンバ関数版をオーバーロードしました。

template<typename T>
void g(double &a, double b, T t, double (T::*f)(double d) ) { a=(t.*f)(b); }

g(z, 3.0, c, C::m); // (#2a)

という感じです。
ひとまずこれで動くようになりました。


インスタンス c とメンバ関数 C::m を別々の引数で与える仕様にしましたが、
これを単一の引数で与えることは不可能でしょうか?

101 名前:デフォルトの名無しさん :04/09/02 11:57
>>100
boost::functionを使うと,
typedef boost::function <double (double)> Functor;
void g(double &a, double b, Functor f ) { a=f(b); }
g(z, 3.0, Functor (k)); // (#1a)
g(z, 3.0, boost::bind (&C::m, &c, _1)); // (#2a)

Loki::Functorを使うと,
typedef Loki::Functor <double, TYPELIST_1 (double)> Functor;
void g(double &a, double b, Functor f ) { a=f(b); }
g(z, 3.0, Functor (k)); // (#1a)
g(z, 3.0, Functor (&c, &C::m)); // (#2a)

みたいには書けます.
あと100は
g(z, 3.0, c, &C::m); // (#2a)
じゃないんでしたっけ? g++ 2.95は通るとしても.


102 名前:96 :04/09/02 12:17
>>101
御教授ありがとうございます。
結局のところ、 c と C::m の両方をどこかに書かなくてはいけないという点では
似たようなものですね。

ご指摘のように、& を付けた &C::m が適切です。
& が無いとコンパイラが文句を言います。
書き写すときに付け忘れました。

103 名前:デフォルトの名無しさん :04/09/02 21:10
シリアル通信で16進数コードを送受信するプログラムを作成しています。
そこで質問なのですが

char hexcode[] = {0x00,0x06,0x10};

というデータが入っているときにコンソールに

0x00 0x06 0x10

と表示させたくて

for(int i = 0;i<3;i++) cout<<"0x"<<hex<<hexcode[i]<<" ";

としたのですがうまくいきません(空白が出力される)。16進コードをそのまま
出力させるにはどのようにすればいいのでしょうか?


104 名前:デフォルトの名無しさん :04/09/02 21:14
static_cast<int>(hexcode[i]) こう?

105 名前:103 :04/09/02 21:19
>>104
即レスどうもです。今は帰宅してプログラム出来る環境にないので
明日さっそく試してみます。

106 名前:デフォルトの名無しさん :04/09/02 21:54
>>104
intだと0x80とかが0xffffff80みたいにされなかったっけ?

107 名前:デフォルトの名無しさん :04/09/02 22:01
つまり
for(int i = 0;i<3;i++) cout<<"0x"<<hex<<(hexcode[i]&0xFF)<<" ";
にしろってことだな。

108 名前:104 :04/09/02 22:06
そうでしたね。iomanip で出力幅を調整するとか
してみてください>>103


109 名前:デフォルトの名無しさん :04/09/02 22:29
STL専用の別スレってどこですか。
自己定義のallocatorについて質問してもいい?

110 名前:デフォルトの名無しさん :04/09/02 22:33
ここかな
【C++】template 統合スレ -- Part5
http://pc5.2ch.net/test/read.cgi/tech/1091522597/

111 名前:103 :04/09/02 22:40
>>104-108
皆さん、有難う御座います。自分なりにそこそこ勉強したつもり
だったんですが基本的な部分の知識が欠落してました。出力
出力マニュピュレータにつて詳しく勉強してみます。

112 名前:デフォルトの名無しさん :04/09/03 01:01
C++のcharは文字っぽい

113 名前:103 :04/09/03 13:58
昨日は有難う御座いました。本日試したところ無事に16進コードを
表示させる事が出来ました。当初の問題は解決したのですが、また
疑問が出来たので質問させて下さい。

char hexcode[] = {0x00,0x06,0x10};

というデータがある時

for(int i = 0;i<3;i++) cout<<"0x"<<hex<<(hexcode[i]&0xFF)<<" ";

だと正常に出力出来て

for(int i = 0;i<3;i++) cout<<"0x"<<hex<<hexcode[i]<<" ";

だとうまくいかないのはナゼでしょう?charは8ビットなので0xFFで
わざわざビットを取り出さなくても良い気がするのですが?

114 名前:デフォルトの名無しさん :04/09/03 14:01
hexcode[i] <-これは char
hexcode[i]&0xFF) <- これは int

115 名前:デフォルトの名無しさん :04/09/03 14:03
>>113
for(int i = 0;i<3;i++) cout<<"0x"<<hex<<static_cast <int> (hexcode[i])<<" ";


116 名前:デフォルトの名無しさん :04/09/03 14:14
C++の質問です。
オブジェクト自体をファイルに保存することってできるんでしょうか?


117 名前:デフォルトの名無しさん :04/09/03 14:26
>>116
バイナリイメージをそのまま保存するようなことは、普通はやらないね。

118 名前:デフォルトの名無しさん :04/09/03 14:40
では、オブジェクトに入ってるデータ?っていいしか思いつかないのですが、そういったデータはファイルに一つずつ書き込んでいくんですか?

119 名前:デフォルトの名無しさん :04/09/03 14:54
>>118
そうだよ。

120 名前:デフォルトの名無しさん :04/09/03 15:01
オブジェクトのシリアライズ。

121 名前:デフォルトの名無しさん :04/09/03 15:04
>118
「シリアライズ」や「直列化」と呼ばれる処理だね。ググってみるヨロシ。
いろいろ工夫する部分 (しなきゃいけない部分) があって面白い分野だ。

122 名前:デフォルトの名無しさん :04/09/03 15:27
boost1.32にSerialization加わるから楽しみだ

123 名前:デフォルトの名無しさん :04/09/03 15:34
>>113
>for(int i = 0;i<3;i++) cout<<"0x"<<hex<<(hexcode[i]&0xFF)<<" ";
>だと正常に出力出来て

整数の昇格とか汎整数拡張とか、インテグラルプロモーションとか
その辺をキーワードに調べてみると分かると思うんですが、要するに
式の中では int よりサイズの小さい型をもつ変数は、暗黙のうちに
int に変換されて、式の値も int になるんです。この性質を上手く
利用しているんでしょう。

そういうことなので、hexcode[i] & 0xFF という式の中では
hexcode[i] が char から int へ変換されますが、>>106氏が指摘
したように hexcode[i] == 0x80 のような場合だと int に拡張
されたとき 0xFFFFFF80 になってしまうんで、0xFF でマスクを
取る必要があるわけです。

>for(int i = 0;i<3;i++) cout<<"0x"<<hex<<hexcode[i]<<" ";
>だとうまくいかないのはナゼでしょう?

hexcode[i] が char のままなので文字出力用の operator<<() が
呼び出されてしまうからです。

124 名前:  :04/09/03 15:45
>>121
ありがとうございました!!
勉強になりました

125 名前:デフォルトの名無しさん :04/09/03 16:00
ビットマップの画素を扱う構造体としてRGBQUADというBYTEデータが4つのデータ型を定義します。
しかし構造体なので画素の加算などRGB別に3行コーディングしなければなりません。

そこでクラスにしてオペレーターを定義しました。
ところがこのクラス、リリース版でも遅いのです。約1.3倍ぐらい時間がかかります。
オペレーターの記述はごく普通のものです。開発環境は最新のVisualStudioですが、こんなに
はっきり遅くなるものなのでしょうか?

126 名前:デフォルトの名無しさん :04/09/03 16:04
>>125
インライン関数にしてみたら?

127 名前:デフォルトの名無しさん :04/09/03 16:27
プログラムが指定した数字以外は入力できないようにする(数字以外も)にはどうすれば良いでしょうか?

128 名前:デフォルトの名無しさん :04/09/03 16:30
>>127
数字以外かどうかチェックすればいいと思います。

129 名前:デフォルトの名無しさん :04/09/03 16:30
>>127
「入力できないい」の意味があいまいなので、誰も答えられないと思う。
少なくとも日本語(英語とかでもいいけど)で要求仕様を書けないようだと、
解決方法も得られない。

130 名前:デフォルトの名無しさん :04/09/03 16:39
>>127
入力して欲しくないキーの上に画鋲を張っておくとか。

131 名前:デフォルトの名無しさん :04/09/03 17:05
>>127
どういう状況で数字入力を禁止したいのか分かりませんが、
GUIなら特定のキー以外のイベントを無視するとか、
コンソールで対話的な動作なら、Enterキー入力後に再入力を求めるとか。

132 名前:デフォルトの名無しさん :04/09/03 17:06
>>127
あ、そもそもC++の話題じゃないのかな?

133 名前:デフォルトの名無しさん :04/09/03 17:17
>>130
そんなことされたら余計押したくなるだろ

134 名前:デフォルトの名無しさん :04/09/03 17:46
>>127
入力して欲しくないキーを押したらハードディスクのフォーマットを開始すると
明示しておき、押されたら実際にフォーマットを開始すればよい。

135 名前:デフォルトの名無しさん :04/09/03 17:58
>>123
式の値は常にintになるわけじゃないけどな。まあ、細かい話だが。
この例ではintになると考えていいだろう。

136 名前:デフォルトの名無しさん :04/09/03 18:30
オーバーロードでcharを受け取る演算子が定義されていても無条件に
プロモートが行われてintになってしまったら困るわけだが。

そもそも<<でchar型の単文字を表示できなくなって困るじゃないか。

137 名前:デフォルトの名無しさん :04/09/03 18:52
>>127
押されたくないキーを1兆回くらい押して壊しておく。

138 名前:デフォルトの名無しさん :04/09/03 18:57
Part34のほうで質問したほうがいいみたいですね。

139 名前:デフォルトの名無しさん :04/09/03 19:14
>>138
どっちみち回答者は同じだ罠。

140 名前:デフォルトの名無しさん :04/09/03 19:21
にもかかわらず
場所を変えると流れも変わるのが不思議なところ

141 名前:デフォルトの名無しさん :04/09/03 19:55
int型で1−10までの数字だけ入力でき、それ以外の数や文字では、「不正な数が入力された」
と表示されるようにしたいんですけど

142 名前:デフォルトの名無しさん :04/09/03 20:00
そういう質問をするとCスレ誘導厨がわくからやめて。

143 名前:デフォルトの名無しさん :04/09/03 20:01
>>141
if文の使い方わかってれば出来るだろう

144 名前:デフォルトの名無しさん :04/09/03 20:01
printf( "1−10までの数字以外をいれたら自爆する" );

145 名前:デフォルトの名無しさん :04/09/03 20:05
C++ スレに書いたって事は、そういうクラスの作り方を知りたいってことか?

146 名前:デフォルトの名無しさん :04/09/03 20:39
>>141
ここでもお読みなさい。
http://www.kumei.ne.jp/c_lang/cpp/cpp_66.htm

147 名前:デフォルトの名無しさん :04/09/04 01:34
何はともあれ、>>133は勇者

148 名前:デフォルトの名無しさん :04/09/04 10:43
>>89
HogeClass *myhoge;

HogeClass **myhoge;


149 名前:デフォルトの名無しさん :04/09/04 23:41
C++をはじめようと思って、ボーランドのフリーのコンパイラを
インストールしたのですが、うまくコンパイルできません。

コマンドプロンプトで bcc32 hello.cpp(hello.cppはコンパイルしたいファイル名)
と入力すると、'bcc32'は、内部コマンドまたは〜〜として認識されていません。
というエラーがでます。

コンパイラをマイドキュメントにフォルダを作ってそこにインストールしたのですが
それがダメだったんでしょうか?
ソースファイルもマイドキュメントに別フォルダを作ってそこに入れています。

アドバイスお願いします。


150 名前:デフォルトの名無しさん :04/09/04 23:44
>>149
タダで使えるBorland C++ Part4
http://pc5.2ch.net/test/read.cgi/tech/1091066805/

151 名前:498 :04/09/04 23:51
板違いでしたか・・・・

向こうで聞いてきますね。
失礼しました。

152 名前:デフォルトの名無しさん :04/09/05 00:49
つーかパス通ってねーだけだろ…

153 名前:デフォルトの名無しさん :04/09/05 00:57
パスは通っています!!
勝手に決め付けないでください!

154 名前:デフォルトの名無しさん :04/09/05 01:23
俺はパス。

155 名前:デフォルトの名無しさん :04/09/05 01:45
↓お前はパンパース

156 名前:デフォルトの名無しさん :04/09/05 01:55
│↑
└┘
 ∩∧∧
 ヽ(゚Д゚ )
   \⊂\
    O-、 )〜
      ∪

157 名前:デフォルトの名無しさん :04/09/05 13:00
質問ス

class A {
public:
 A(int v) {};
private:
 A(const A&) {
  puts("コピーコンストラクタ禁止");
 }
};

とやると

{
 A a = A(1);
}

が"privateだから呼べない"コンパイルエラーになります。
ところが、privateをpublicにすると、コンパイルはとおりますが、
実行してもputs()が呼び出されるわけではありません。

どう解釈したらよいんでしょうか。

158 名前:デフォルトの名無しさん :04/09/05 13:17
>A a = A(1);
これは意味論上はコピーコンストラクタを呼び出しているが、
コンパイラは呼び出しを省略しても良いことになっている。
このほかにこういうことが起こるのは「戻り値の最適化」と呼ばれる場合。
この二つ以外なら確実にコピーコンストラクタが呼ばれる。

159 名前:デフォルトの名無しさん :04/09/05 13:33
前方参照宣言ってコンパイル時のリソース消費量を軽くする以外になんか
意味があるんでしょうか?関数のプロトタイプ宣言なら、
型チェックの意味もあったりして便利だとは思うけど。
class CLASS;

160 名前:デフォルトの名無しさん :04/09/05 13:37
>>159
意味はクラス型の宣言。それだけ。
コンパイル時のリソース〜はただそういう使い方ができるというだけ。
class CLASS; のあとに namespace CLASS とかできなくなる効果もあると言えるかもしれない。

161 名前:デフォルトの名無しさん :04/09/05 13:48
>>159
前方宣言しないと、相互にポインタを持ち合うようなクラスが作れない。

struct B;
struct A { B* b; };
struct B { A* a; };

あとコンパイル速度は重要だと思うぞ。前方宣言せずにヘッダファイル中で
#include しまくると、すぐにヘッダファイルの依存関係が深くなる。一つの
ヘッダ書き換えただけで大量の再コンパイルが必要になって、生産性に
かなりの悪影響が出る。

162 名前:デフォルトの名無しさん :04/09/05 14:40
>>158
なるほど、意味論上のチェックでもって弾かれるけど、
実際には呼び出されないということですね。
うーんややこしい。
ありがとうございました。

163 名前:デフォルトの名無しさん :04/09/05 15:00
>>160-161
なるほど・・・

164 名前:デフォルトの名無しさん :04/09/05 15:51
>>160-161
なるほど・・・

165 名前:デフォルトの名無しさん :04/09/05 22:24
>>163-164
・・・ザ・ワールド

166 名前:デフォルトの名無しさん :04/09/05 22:30


167 名前:デフォルトの名無しさん :04/09/05 22:54
そして時は動き出す

168 名前:デフォルトの名無しさん :04/09/05 23:03
ある共通関数にarray stringというパラメタがあったのですが、
これは具体的にはどうのようなもんでっしょうか?

stringはたぶんSTLで、arrayって????

169 名前:デフォルトの名無しさん :04/09/05 23:08
>>168
具体的にっていう質問は、具体的なコード出してから言うもんだ。

170 名前:デフォルトの名無しさん :04/09/05 23:32
int aaa(array string str)
{

}

こんなかんじ


171 名前:デフォルトの名無しさん :04/09/05 23:40
>>170
少なくとも標準ライブラリの範疇ではないので、ここで聞いても回答
得られんぞ。手元のコードからarray の定義を探してくれ。

172 名前:デフォルトの名無しさん :04/09/06 00:07
>>170
そんなのコンパイル通るの?
#define array
だったら通るだろうけど。
ついでに
#define string int
だったらおもしろいのに。

173 名前:デフォルトの名無しさん :04/09/06 00:18
STLのアルゴリズムに渡す関数、
テンプレートの具象化したモノのtypedefなんかは大域で
使えちゃうと気持ち悪いので名無しのnamespaceにぶち込むようにしている。
こんなnamespaceの使い方はアリなんだろうか。
まぁ関数だけならstatic宣言してもいいんだろうけど。

174 名前:デフォルトの名無しさん :04/09/06 00:27
そりゃ立派な用途だと思うけど・・・

175 名前:デフォルトの名無しさん :04/09/06 00:29
>>173
俺も同じコトやってる。*.cpp ローカルにしか使わない構造体とかは、基本的に
無名名前空間行き。特定クラスに強く結びついてるモノは nested class にする
けど。

C++ だと非グローバルスコープの構造体・クラスはテンプレート引数に渡せないっつー
制約があるから、他のソースコードとの名前重複を無視したければ無名名前空間に
入れるのが安全だよね。

176 名前:173 :04/09/06 00:36
なるほどね。
グローバルスコープを持つように見せかけつつ
名前重複を避けたい時に特に有効なのか。
ありがトン。

177 名前:デフォルトの名無しさん :04/09/06 07:26
Cのモジュールローカルなstaticと同じように無名名前空間を使うのは常識でしょ

178 名前:デフォルトの名無しさん :04/09/06 07:32
>>177
前スレ795-の話が少し気になる。
気にしてもしょうがないんだろうけど。

179 名前:デフォルトの名無しさん :04/09/06 08:47
>>175
構造体やtypedefを無名名前空間に入れても意味無くないか?

これらは関数と違って名前が外部に出ないだろ?

180 名前:デフォルトの名無しさん :04/09/06 13:16
void hoge()
{
int i = 0; // <----(a)
{
int i = 1;
// ここで(a)のiにアクセスしたい
}
}

内側のスコープで::iと書くとグローバルのiを探しに行ってしまいます。
上記のようなことは出来ないのでしょうか?

181 名前:デフォルトの名無しさん :04/09/06 13:18
つまんねー釣りだなおい

182 名前:デフォルトの名無しさん :04/09/06 13:29
こういうあまりにくだらないのは放置しましょうねみなさん。

183 名前:180 :04/09/06 13:37
>>181-182
真面目に訊いているのですが…
C++始めたばかりなのですが、変な質問なのでしょうか?

184 名前:デフォルトの名無しさん :04/09/06 13:40
日本語書けてる奴がこんな知障がするような質問するかよ

185 名前:デフォルトの名無しさん :04/09/06 13:50
グローバル・・・・

186 名前:180 :04/09/06 13:52
>>181-182
なんとなく言いたいことがわかりました。
変数名を変えればいいじゃん、ってことですかね?
そうではなく>>180のような状況でも何かアクセスする手段があるのかなと疑問に思ったのです。


187 名前:デフォルトの名無しさん :04/09/06 13:59
こいつよりチンパンジーがC++習った方が上達早そうだな

188 名前:デフォルトの名無しさん :04/09/06 14:10
>>186
基礎からやり直した方が速いよ。もうこのスレに来んな。

189 名前:デフォルトの名無しさん :04/09/06 14:29
こういう構ってチャンは放置が一番有効なんだよ

190 名前:180 :04/09/06 14:35
真面目に答えてくれる方がいないようなので他のところで訊いてみます…

191 名前:デフォルトの名無しさん :04/09/06 14:37
>>190
どこで聞いても同じだと思うが。

192 名前:180 :04/09/06 14:39
>>191
そうですか…
自分は何を勘違いしてるのでしょうか?
それすらわかりません…

193 名前:デフォルトの名無しさん :04/09/06 14:42
180は悪くないな。答えてるやつがたまたまドキュソなだけ。
結論から言うと、180が求めてるような機能はC++にはないな。

194 名前:デフォルトの名無しさん :04/09/06 14:42
>>192
>>180の内容を100回声に出して読んでみな。

195 名前:デフォルトの名無しさん :04/09/06 14:43
>>193
君も勘違いしてる。

196 名前:デフォルトの名無しさん :04/09/06 14:51
スタックのないマシンのコンパイラだったら自動変数もヒープに確保するでしょ。
コンパイラの拡張機能でiにアクセスできるかもよ。

197 名前:デフォルトの名無しさん :04/09/06 14:52
>>196
君も勘違いしてる。

198 名前:デフォルトの名無しさん :04/09/06 14:53
何が勘違いなんだか。180も変なの絡まれて運が悪かったな。
まあ答えは一言、「残念ながらそんな機能はありません」で終わりなのは確かだが。

199 名前:180 :04/09/06 14:55
>>193
そうですか。無いとわかったのですっきりしました。
無いからといって困るわけではありませんが、気になって仕方が無かったので質問しました。
ありがとうございました。


200 名前:デフォルトの名無しさん :04/09/06 14:56
>>197
どう勘違いなの?

201 名前:デフォルトの名無しさん :04/09/06 14:57
自動変数とはhoge、もしくはそこからコールされた関数に
制御があるあいだだけ存続するというのは、仕様ですか?

202 名前:デフォルトの名無しさん :04/09/06 15:00
>>201
仕様です。

203 名前:デフォルトの名無しさん :04/09/06 15:00
勘違い言うぐらいなら言語の厳密な仕様ぐらいわかってるんだよな。
はよ、教えれ。

204 名前:デフォルトの名無しさん :04/09/06 15:00
スレの流れが速いと思ったら、知障が沸いてたのか

205 名前:デフォルトの名無しさん :04/09/06 15:00
>>202
どこに書いてあんの?

206 名前:デフォルトの名無しさん :04/09/06 15:01
だから*問題通りの*プログラム書いて質問しろよ。

207 名前:デフォルトの名無しさん :04/09/06 15:01
いっとくが変数領域の存続期間と言語機能としてのスコープは別だからな

208 名前:デフォルトの名無しさん :04/09/06 15:02
>>205
どこって、もちろん仕様書に書いてあるはずと思うぞ。

209 名前:デフォルトの名無しさん :04/09/06 15:04
どうでもいいけど180の問題は解決しただろ。
これ以上何がやりたいんだ?
180を非難したいのか?

210 名前:デフォルトの名無しさん :04/09/06 15:04
>>208
だから、あれは仕様書じゃないってば。

211 名前:デフォルトの名無しさん :04/09/06 15:06
>>210
いや、「あれ」って言われてもな・・・
なんやら話が良くわからんから退散するわ。あしからず。

212 名前:デフォルトの名無しさん :04/09/06 15:07
>>199
グローバルならアクセス可能だよ

#include <stdio.h>

int i = 111; //これがグローバル

int main(){
 int i = 333; //ローカル
 {
  int i = 777; //ローカル
  printf( "%d, %d", ::i, i );
 }
 return 0;
}

//実行結果
//111, 777

213 名前:212 :04/09/06 15:11
ってごめん俺も良く読んでなかった、ちゃんと分かってるね
それじゃ煽ってる奴は、どこに突っかかってるんだ…

214 名前:デフォルトの名無しさん :04/09/06 15:14
180の頭の悪さ

215 名前:デフォルトの名無しさん :04/09/06 15:14
>>212
あーあネタばらしちゃった。まあいいや。
ところでローカル変数とグローバル変数を区別したければ、グローバル変数を
名前空間に入れておけばよい。

216 名前:デフォルトの名無しさん :04/09/06 15:17
頭の良さ
180>>>>>>つっかかってるやつ>215

217 名前:デフォルトの名無しさん :04/09/06 15:20
>>216
もうええっちゅーのに。

218 名前:デフォルトの名無しさん :04/09/06 15:24
↓流れを変える一言

219 名前:デフォルトの名無しさん :04/09/06 15:27
ぬるぽ

220 名前:デフォルトの名無しさん :04/09/06 15:28
↓気を取り直してもう一言

221 名前:デフォルトの名無しさん :04/09/06 15:29
>>215
ローカル変数は同名の変数によって完全に隠蔽されてしまうから
それは無理。

222 名前:デフォルトの名無しさん :04/09/06 15:32
>>221はスルーの方向でもう一言

223 名前:デフォルトの名無しさん :04/09/06 15:35
えんがちょ

224 名前:デフォルトの名無しさん :04/09/06 15:36
      ,,、-'''"´ ̄    ̄`"''-、
    /              \
   /                 ヽ
   |  (●)        (●)  |、
 / | :::::    \___/    ::: | \
(_/ヽ         \/        /ヽ_)
    \              /    
       -、、,,,,,__,,,,,、、- 
       ( __)   (__ _)

225 名前:デフォルトの名無しさん :04/09/06 15:43
ところで喪前ら switch で case ラベルごとにブロックで囲ってる?
例えばこんな感じで

switch( null )
{
    case p:
    {
        break;
    }
    case o:
    {
        break;
    }
}


226 名前:デフォルトの名無しさん :04/09/06 15:48
>>225
変数使うときだけ囲ってる。

switch( null )
{
case p:
{
    char ga[] = "ガッ";
break;
}
case o:
break;
}


227 名前:デフォルトの名無しさん :04/09/06 16:25
>>199
ノセラレテじゃじゃじゃじゃ〜ん
void hoge()
{
 struct{
  int i;
 }my;
 my.i = 10;
 {
  int i=100;
  cout<<i<<' '<<my.i<<endl;
 }
}

228 名前:デフォルトの名無しさん :04/09/06 18:08
例えば構造体
ABC
っていうのがあって
この型の変数を定義する場合
ABC gABC;
ABC new gABC;
とnewをつける場合とつけない場合って
どういう違いがあるのでしょうか?

229 名前:デフォルトの名無しさん :04/09/06 18:29
>>228
コンパイル通らねえだろソレ

230 名前:デフォルトの名無しさん :04/09/06 18:41
メンバ変数に _ をサフィクスに使ってる人ってグローバルは何使ってます?
やっぱり g_ のプリフィクス?

231 名前:デフォルトの名無しさん :04/09/06 19:18
プリフィックスとサフィックスなら,互いに干渉しないじゃん。

232 名前:デフォルトの名無しさん :04/09/06 22:58
>>231
漏れはメンバ変数には prefix に _ を使っています。
グローバル変数は使ったことありません。
定数なら全部大文字にしてるけど。

それより、クラス変数 (っていうんだっけ?) には
何を使えばいいんですか?(static Class::xxx)

233 名前:デフォルトの名無しさん :04/09/06 23:19
自分で決めろ

234 名前:デフォルトの名無しさん :04/09/06 23:41
>>232
m_*****
を使うのが普通では?

235 名前:デフォルトの名無しさん :04/09/06 23:56
_をprefixにするのは良くないらしいよ。システムが予約してるんだそうな。
まあ、GoFがこれやっちゃってる悪しき例なんだが。

236 名前:デフォルトの名無しさん :04/09/06 23:57
>>230
globalは全部globalネームスペースに詰め込んで
global::
でアクセスします

237 名前:デフォルトの名無しさん :04/09/07 02:15
#include <iostream>
using namespace std;

int main() {
bool b1 = true , b2 = false , b3 = 0;
if (b1 && (b2 || ++b3)) cout << "Kitty on your lap";
cout << b1 << b2 << b3 << b1 && (b2 || ++b3) << endl;
return 0;
}

このコンテキストではオーバーロード'endl'が曖昧というエラーがでます。
<< endl を省くとコンパイルできるのですが
なぜ endl がダメなのか、わかりません。

コンパイラはBorland C++5.5.1です。
よろしくお願いします。


238 名前:デフォルトの名無しさん :04/09/07 02:20
>>237
曖昧でないと言えるのか?

ごちゃごちゃ書いてあるけど、問題はこういうことだろ。
cout << b1 && b2 << endl;

239 名前:デフォルトの名無しさん :04/09/07 02:44
TLSって必須じゃないですか?
何故C++はTLSをサポートしないのですか?

240 名前:デフォルトの名無しさん :04/09/07 03:16
ギャルゲーはギャルゲー板で

241 名前:240 :04/09/07 03:18
で、thread local storageのことだとすると、
threadはC++の範囲外だからサポートも糞もないのよ。
そんだけ。

242 名前:デフォルトの名無しさん :04/09/07 03:24
でもほとんどのコンパイラが独自拡張していますが、
それでも範囲外ですか?

243 名前:デフォルトの名無しさん :04/09/07 03:43
標準であるべきと思うなら、規格を決めてる人たちに提案してみたら?

244 名前:デフォルトの名無しさん :04/09/07 05:27
boost::threadがあるので次期標準になるかも

245 名前:デフォルトの名無しさん :04/09/07 05:33
移植性ってそんなに重要じゃないですよね?
Windowsで動けば充分ですよね?

246 名前:デフォルトの名無しさん :04/09/07 05:36
主語がないよ

247 名前:デフォルトの名無しさん :04/09/07 05:39
ソフトウエア(ソースコード)の移植性です。
よろしくお願いします。

248 名前:デフォルトの名無しさん :04/09/07 07:54
依頼主に聞けよ・・・

249 名前:デフォルトの名無しさん :04/09/07 10:04
>>239
>TLSって必須じゃないですか?

マルチスレッドのアプリいくつか作ったけど
TLS使ったことないよ
必須なの…?

250 名前:デフォルトの名無しさん :04/09/07 11:00
Cのtime.hみたいな腐れた設計のライブラリでも使わない限りTLSなんか必要ないだろ。


■過去ログ置き場に戻る■ 1- 次250 最新50
DAT2HTML 0.33f Converted.