スレを勃てるまでもな ..
[2ch|▼Menu]
838:デフォルトの名無しさん
09/09/05 22:25:51
やだね、こういう言いたいことを裏に覗かせつつ質問する馬鹿って。

>>837
マジックナンバーと呼ばれるものには私の知る限り3種類ある。
・野球のマジックナンバー。詳細は知らん。
・コード中に埋め込まれた由来不明の値。何故その数字か判らんが兎に角動くと言う皮肉を込めて、マジックナンバーと呼ぶ。
・主にバイナリファイルの先頭に置いて、ファイルの種別を明示するために使われるバイト列。或いはそれを数値化したもの。
Unix使いなら/usr/share/file/magic辺りにあるから覗いてみるといい。

839:デフォルトの名無しさん
09/09/05 22:29:20
馬鹿とまで言われるとは思っていませんでした。
> ・コード中に埋め込まれた由来不明の値。何故その数字か判らんが兎に角動くと言う皮肉を込めて、マジックナンバーと呼ぶ。

僕もこれだと思っていたのですが、>>834さんは出力がマジックナンバーといっているので、
いったいどういう事だろうかと思ったんです。

840:デフォルトの名無しさん
09/09/05 22:33:47
質問しただけで荒れるってジャスティスののか

841:デフォルトの名無しさん
09/09/05 22:34:25
>>837
URLリンク(en.wikipedia.org)(programming)
まぁファイルフォーマットとかを直接触らない人には関係ないかもね。

842:デフォルトの名無しさん
09/09/05 22:40:05
>>841
・an unnamed or ill-documented numerical constant value;
これを言いたそうな気配はするんだが、なんか違った意味で使ってるよな
そりゃ質問もされるだろうよ

843:デフォルトの名無しさん
09/09/05 22:52:03
元素か

844:デフォルトの名無しさん
09/09/05 23:05:49
Linuxでは出力もマジックナンバーと呼ぶんだけどな。
ドザは頭が悪くて困る。

845:デフォルトの名無しさん
09/09/05 23:09:48
C言語でプログラムを作成してる際にわからないことがあったので質問させてください
3次元座標(-0,5、0,5、0)を
(sin(t)、t、cos(t))
みたいな形で現したいと思ってるんですがどのように現すのか教えてください

よろしくお願いします

846:デフォルトの名無しさん
09/09/05 23:16:03
どうも使い方の間違いを肯定したくなくてすり替えばかりしているように見える
よくあることだけどな

847:デフォルトの名無しさん
09/09/05 23:17:38
>>845
sin(0.5)は-0.5ではないし、cos(0.5)も0ではないが・・・
どういう意味なので?

848:デフォルトの名無しさん
09/09/05 23:19:00
>>845
double point_3d[3];
point_3d[0] = sin(t);
point_3d[1] = t;
point_3d[2] = cos(t);

とか?

849:845
09/09/05 23:25:39
DrawLine関数で
(-0,5、0、0)から(-0,5、0,5、0)までの直線をひきたいんですが、その後にその線を変数θを使用して回転させたいと思ってるのでsincosで座標を現したいと思ったのですが
可能でしょうか?

850:デフォルトの名無しさん
09/09/05 23:35:32
Linuxでも
>例えばint foo = 'abcd'としてprintf("%d\n", foo)としたときの出力が、所謂マジックナンバー。
なんていったりはしないよ。
もし言うというなら、Linux板にコピペしてきてそのスレで1000人の同意があったら認める^^

851:デフォルトの名無しさん
09/09/05 23:43:12
>>849
直交座標系と極座標系の変換を知りたいの?
もし単に回転させたいならアフィン変換すればいいだけだけど。

852:デフォルトの名無しさん
09/09/05 23:48:39
>>851
よくわかりません
x座標が-0,5なので-cos(60)でいいのかと思ってやってみてもうまくいかなくて…

3次元での座標を表すときのsinθcosθというのは単に数値を入れるのとは全く別物なんでしょうか?

(0,5、1、0)の座標をsincosの座標で現したいと思ったときに(cos(60)、1、sin(0))と表してもまったく別の位置に表示されるんですけど

853:デフォルトの名無しさん
09/09/05 23:51:36
sin,cosの引数はラジアン。

854:デフォルトの名無しさん
09/09/05 23:52:08
sin、cosの引数は度じゃなくラジアンだから *3.14/180 しないとだめ

855:デフォルトの名無しさん
09/09/05 23:59:56
ありがとうございます
わかりました

856:デフォルトの名無しさん
09/09/06 00:29:07
こないだからC++以前に数学がわかってないやつが多いな

857:デフォルトの名無しさん
09/09/06 00:34:46
というか、本にせよリファレンスにせよ、どっかで説明読めば
引数がラジアンだってことくらい書いてあるはず
理論に基づいて組み上げるんじゃなく
カンでプログラミングしてるんじゃないか

858:デフォルトの名無しさん
09/09/06 00:52:37
普段からsmartポインタって乱用してる?
複雑な管理が必要になる部分以外は余分なコストがかかるから使わないほうがいいのかなって思ったんだけど

859:デフォルトの名無しさん
09/09/06 01:02:17
RAIIとかPimplイディオムを実現するには必要不可欠だろうが

860:デフォルトの名無しさん
09/09/06 01:05:49
RAIIとpimplってほんとによく出てくるなぁ。
RAIIはさておき、pimplは目の当たりにしたことがないから実感がわかない

861:デフォルトの名無しさん
09/09/06 01:06:50
使わなかったところで、それと同様のコードを自分で書く羽目になるだけ、自分へコストが跳ね返ってくる。

まあ、最も単純かつ実行時の負荷が低コストでしかも標準のauto_ptrが残念な出来なのは仕方がない。
unique_ptrに期待しましょう。

862:デフォルトの名無しさん
09/09/06 01:07:24
Exceptional C++を読みなせえ

863:845
09/09/06 01:51:30
すいません
さっき教えていただいた通りにラジアンで線を引けたのですが、for文で線を何本も引いて円を書こうと思い
(sin(θ×t)、1、cos(0))
とし、tの値を少しずつ大きくしていきました。
そうするとx軸に沿って円がかけるはずだとおもうのですが45度から130度くらいまでの扇形みたいな形しかできません

まったく理由がわかりません

どなたかアドバイスをください
お願いします

864:デフォルトの名無しさん
09/09/06 01:59:23
自己解決しました

865:デフォルトの名無しさん
09/09/06 02:01:44
質問の文章考えてるヒマがあったらトライ&エラーやってた方が有意義じゃないか?

866:デフォルトの名無しさん
09/09/06 08:28:07
>>858 乱用してるよ!!

スマポのメリット>>>>>>>>>>>>ほんのわずかなコスト


867:デフォルトの名無しさん
09/09/06 09:05:17
>>858
スマポの評価はboostのスマポ、特にshared_ptrを使ってからしたほうがいい。
マジお勧め。


868:デフォルトの名無しさん
09/09/06 11:04:43
確かにboostのshared_ptrはその利便性からいって鬼。
これ以上ないほどの。


869:デフォルトの名無しさん
09/09/06 11:12:58
FFTで求めた実部データと虚部データから振幅スペクトルを求めるにはどうしたらいいですか?
パワースペクトルだと大きすぎるのでさけたいです

870:デフォルトの名無しさん
09/09/06 11:19:21
>>869
帰れ

871:デフォルトの名無しさん
09/09/06 12:08:14
>>869
mag=hypot(real,image)


872:デフォルトの名無しさん
09/09/06 12:19:02
>>870だが断る

873:デフォルトの名無しさん
09/09/06 14:29:57
グローバル変数を使う時は、関数プロトタイプ宣言より前じゃないとダメなんでしょうか?


874:873
09/09/06 14:30:42
日本語おかしかったです、すいません
グローバル変数を使う時は、関数プロトタイプ宣言より前にグローバル変数の宣言をしないとダメなんでしょうか?

875:デフォルトの名無しさん
09/09/06 14:32:20
グローバル変数の宣言と関数プロトタイプは何の関係もなくね?

876:デフォルトの名無しさん
09/09/06 14:33:31
そうでしたか、ありがとうございます

877:デフォルトの名無しさん
09/09/06 15:45:55
かかわるプロジェクトでは必ず三項演算子は目の敵になってるんですがgotoみたいな存在なんですか?

878:デフォルトの名無しさん
09/09/06 15:48:40
そんなことないよ。
記述の仕方を統一したかっただけじゃない?

879:デフォルトの名無しさん
09/09/06 15:51:37
行数稼げないからって理由だったら嫌だなw

880:デフォルトの名無しさん
09/09/06 15:54:15
>>877
なんでだろね。
どうも三項演算子を理解できないレベルに合わせろってことらしいんだが、まじかね。

881:デフォルトの名無しさん
09/09/06 16:26:07
理解なんて数秒で済むと思うんだけど

古いコンパイラで条件演算子にバグがあって禁止されていた事はあった

882:デフォルトの名無しさん
09/09/06 16:58:04
>>880

構造化プログラミングから逸脱する場合には不可ってことだと
思うんだけど、本質が理解されないまま全部NGになってること
はよくあるね。

参考演算子そのものの理解は当然だれでもできる。


883:デフォルトの名無しさん
09/09/06 17:01:43
ゴメン、「三項」ね。


884:デフォルトの名無しさん
09/09/06 17:02:09
三項演算子は()を下手に省略するとアレ?って挙動になってバグ取り高い壁になる

885:デフォルトの名無しさん
09/09/06 17:10:05
>>882
構造化プログラミング?
逸脱する場合としない場合kwsk。
逸脱するというのであればすべて逸脱では。

886:デフォルトの名無しさん
09/09/06 17:14:19
どんな用途か知らんが、三項演算子は特に問題ないと思うがw

887:デフォルトの名無しさん
09/09/06 17:17:26
>>882
三項演算子どころか、ポインタもろくに理解せずに仕事してるやつ多数。
それが現実。

888:デフォルトの名無しさん
09/09/06 17:23:23
int x = 0;
int y = 0;
bool b = なにかを代入;
//逸脱しないとき
if (b)
{
x = 123;
}
else
{
x = 456;
}
これは、x = b ? 123 : 456; とできるけど、bの意味する内容とか局所性によってはまぁ許容かな…。

//逸脱するとき
if (b)
{
x = 123;
y = 234;
}
else
{
x = 456;
y = 789;
}

こっちは
x = b ? 123 : 456;
y = b ? 234 : 789;
で書けるけど、b の真偽値に応じた代入処理のセットだと言うことが分からない。
elseifの節が後で現れるともう保守性までNG。>>885 の指摘通り、逸脱するかと
言えば全部逸脱だと思う。ちなみにオレは三項演算子は、ほぼNGにしたい派。

889:デフォルトの名無しさん
09/09/06 17:27:37
>>888
そもそもそんなコード書かないだろというか例が悪すぎるw

890:デフォルトの名無しさん
09/09/06 17:32:20
何とも都合のいい主観判断をするものだ

891:デフォルトの名無しさん
09/09/06 17:33:21
>>888
なんでNGかkwsk。
2つ目みたいな書き方はめったにしないと思うが、その最初の例でNGにしたい理由は?

892:デフォルトの名無しさん
09/09/06 17:36:16
class HogeString
{
private:
  char* str;
public:
  bool isEmpty()const{ return (name == NULL) ? true : false; }
  // これをifで書いたら
  bool isEmpty()const{
    if(name == NULL){
      return true;
    }
    return false;
  }
};

ifだと冗長的な感じがする。こういうのは三項演算子でも良いと思うんだけどな。

893:デフォルトの名無しさん
09/09/06 17:38:30
return name == NULL;

894:デフォルトの名無しさん
09/09/06 17:41:46
ですよねぇ〜。書いた後で気づいたわ。

895:デフォルトの名無しさん
09/09/06 17:43:47
ワロタ

896:デフォルトの名無しさん
09/09/06 18:54:01
string, int, int, int の4つのデータをまとめて扱いたいのですが、
mapだと2つ以上の値のセットを扱うとエラーが出てしまいました。
こういう2つ以上の値のセットを扱うためのコンテナってありますか?

897:デフォルトの名無しさん
09/09/06 18:56:27
keyとなるものだけを残して他の3つは構造体かクラスにすれば良いじゃん。

898:デフォルトの名無しさん
09/09/06 20:36:57
namespaceってプロジェクトにひとつぐらいで十分?もっと細かく分けたほうが良いかな

899:デフォルトの名無しさん
09/09/06 20:37:19
CからC++に来たけど&が参照だったりアドレスだったりして気が狂いそうです

900:デフォルトの名無しさん
09/09/06 20:39:40
>>898
好き好き。
>>899
狂ってろ。

901:デフォルトの名無しさん
09/09/06 20:52:05
*がポインタ宣言だったり参照はがしだったり掛け算だったりする
Cから来たなら大丈夫よ

902:デフォルトの名無しさん
09/09/06 21:07:11
>>899
使い方が全然違うじゃん。
・・・それぐらい分からないと他言語でも無理だろ。

903:デフォルトの名無しさん
09/09/06 21:08:13
>>898
俺は2階層ぐらいだけど。
一番大きいプロジェクトの根幹のnamespaceと、
namespace implementationとか。


904:デフォルトの名無しさん
09/09/06 21:37:13
C++のSTLに含まれているstringのメンバ関数に、
find_first_not_ofというものがありますが、
この関数を
find_first_not_of("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_0123456789")
という風に使って、アルファベットと数字とアンダーバー以外の文字数が
最初に出現する文字数を調べようとしたのですが、うまく働いてくれません。
(;や+などを感知してくれません)

これはなぜでしょうか?

905:デフォルトの名無しさん
09/09/06 21:46:43
>>904
とりあえずソースかけ。
話はそれから。

906:デフォルトの名無しさん
09/09/06 21:49:20
>>904
codepad
URLリンク(codepad.org)

ここで。

907:デフォルトの名無しさん
09/09/06 21:53:17
>アルファベットと数字とアンダーバー以外の文字数が最初に出現する文字数
文字数が出現する文字数ってなんだ?

908:デフォルトの名無しさん
09/09/06 22:12:22
ちょっとぐらい間違ってる日本語を補正する頭もないのかお前は

909:デフォルトの名無しさん
09/09/06 22:25:16
>>908
2か所間違ってるけどな。
まあなんにせよ>>906にあるところに貼ってくれるのをまとう。

910:デフォルトの名無しさん
09/09/07 19:31:24
CあるいはC++でSQLサーバに接続するにはどうしたらいいのでしょうか?
検索しても.NETFrameworkを使ったやり方しかなく困っています
どなたかご教授お願いします

911:デフォルトの名無しさん
09/09/07 19:32:59
sage忘れすまそ('A`)

912:デフォルトの名無しさん
09/09/07 19:48:12
質問です。
32ビットのWindowsの場合malloc()で確保出来るメモリサイズは2Gほどだったと思いますが、
これは、1プロセスあたりの制限ですか?
1つのプログラムで、malloc()を2カ所で呼び出すと、それぞれの箇所で2G確保できるのでしょうか?


913:デフォルトの名無しさん
09/09/07 19:54:23
>>910
ODBCでよければ、
ODBC C++とか、ODBC VC++で検索。

914:デフォルトの名無しさん
09/09/07 20:11:32
>>912
プロセスごとに2GB

915:デフォルトの名無しさん
09/09/07 20:40:05
>>912
どんだけ激しいメモリ消費なんだw

916:デフォルトの名無しさん
09/09/07 20:44:44
>>914
THX
困ったなぁ・・・。ディスクアクセスしながらちびちびやるか。

>>915
48Gほどのテキストデータを木構造に展開して色々やらないといけないのよ。
う〜む、もう少しダイナミックにオンメモリでやりたかった・・・


917:デフォルトの名無しさん
09/09/07 20:45:33
>>916
You, 64ビットに移行しちゃいなYO!

918:デフォルトの名無しさん
09/09/07 20:48:57
BDが真っ青

919:デフォルトの名無しさん
09/09/07 20:53:13
>>916
64bitしかあるまいw
どのみちそんなにメモリ詰めないだろw

920:デフォルトの名無しさん
09/09/07 20:59:40
サーバ用でもない限りマザーボードの上限に引っかかるな

921:デフォルトの名無しさん
09/09/07 21:25:21
>>916
アルゴリズムを検討してメモリの消費量を抑えるのが手っ取り早い。そのほうがいろいろ高速化できる。
それでも解決しないなら最後の手段として64bitOSと64bitコンパイラの採用を考える事になると思うよ。
どんなにメモリがあってもアルゴリズムを改良しないと演算時間がとてつもなくかかりそうな予感。




922:デフォルトの名無しさん
09/09/07 21:43:58
48GBのテキストデータって何ぞ?
漏れのおかずフォルダでもそんなにねーぞ。

923:デフォルトの名無しさん
09/09/07 21:59:47
>>922
そうか、本当に無いのか検証の必要があるな。よし、どっかにアップロードしろ。

924:デフォルトの名無しさん
09/09/07 22:00:23
ゲーム作っててつまずいたので質問します
struct Test{
TEST1 b[2];
省略
}
std::list< Test > lstTest;
こうやって使ってるんですが、このTEST1の配列を動的に確保することってできますか?
リストの中にリストとかしてみたんですが、同じような動きにならなくて困ってます。(ポインタの問題?

925:デフォルトの名無しさん
09/09/07 22:10:58
リストの中にリスト、大丈夫なはずだが

926:デフォルトの名無しさん
09/09/07 22:11:14
64Gって、研究かな?
今は、64Gのテキストデータなんてのを普通に使うようになったのか・・
恐ろしい時代だ・・・。

927:デフォルトの名無しさん
09/09/07 22:12:01
>>924
struct Test {
std::vector<TEST1> b;
};
でいいと思う。
あと解説サイトを見てlistとvectorの使い分けを覚えよう。

928:デフォルトの名無しさん
09/09/07 22:14:01
list -> 知的でおしゃれな感じを出したいときに使う
vector -> スマートなやり手プログラマを演出したいときにはコレ
deque -> 研究者気取りのあなたに

929:デフォルトの名無しさん
09/09/07 23:22:48
48GBとかのデータを扱うなら、クラスタ上でMPIとか使って並列プログラミングってのが筋かなあ

930:デフォルトの名無しさん
09/09/07 23:54:41
buf[10] = 0xff
buf[11] = 0x32
...


int kansu(u_1 *buf){`

i = 10;
printf("test buf[i] %d", i, buf[i])


このようなプログラムで、引数で配列を渡したとき
printfでbuf[10]等の中身を見ようとしたとき、表示がおかしな値になるのですが
どうしてでしょうか?

%d, %s, %x 等もおかしかったのですが

931:デフォルトの名無しさん
09/09/07 23:55:52
"test buf[%d] %d" では?

932:デフォルトの名無しさん
09/09/08 00:14:45
>>931
すみません、ここに書き方間違ってました。
実際のプログラムではそうかいてます。申し訳ありません。
そう書いて、表示がおかしかたtのです


933:デフォルトの名無しさん
09/09/08 00:23:39
%x

934:デフォルトの名無しさん
09/09/08 00:34:53
ソースを張るなり上げるなりしてください

935:デフォルトの名無しさん
09/09/08 00:40:31
u_1が何なのかわからないとなぁ

typedef unsigned char u_1;
だったらprintf()はスタック破壊してるだろうし
typedef unsigned long double u_1;
だったら表示がおかしいとかの次元じゃないし

936:デフォルトの名無しさん
09/09/08 00:47:23
>>935
u_1は、unsignede char です

スタック?どの辺がおかしいのでしょうか?

937:デフォルトの名無しさん
09/09/08 01:06:55
>>930
断片だけ書かれてもわからん。
おかしな値が再現するソースを見せてくれ。

938:デフォルトの名無しさん
09/09/08 01:11:54
>>937
すみません、今手元にないのでそのままお見せできないんですが
下のような感じです。とはいってもさっきと一緒で分かりにくいでしょうが・・


buf[50] ;
buf[1] = 0; buf[2] =5 等代入
void kansu(buf);

void kansu(u_1 *buf){`

i = 10;
printf("test buf[%d] %d", i, buf[i])

printf以降でbuf[i]の中身を別のバッファにコピーしてるのですが、
それを確認しようと思い、printfで確認しようとしたところ
まずその確認以前にうまく表示できなかったもので・・・

939:デフォルトの名無しさん
09/09/08 01:18:12
そもそも、bufの型はなんなんだ?
メモリは確保されてるのか?

940:デフォルトの名無しさん
09/09/08 01:18:36
>>939
malloc関数でかくほしております

941:デフォルトの名無しさん
09/09/08 01:19:31
>>939
bufは、unsigned char です

942:デフォルトの名無しさん
09/09/08 01:23:51
mallocで確保するんならbuf[50]は変な気がするけどな。

943:デフォルトの名無しさん
09/09/08 01:40:27
>>941
> i = 10;
> printf("test buf[%d] %d", i, buf[i])
別に表示がおかしくなることはないと思うがな。
この部分の、期待している表示と実際の表示を書いてくれ。

944:デフォルトの名無しさん
09/09/08 07:33:43
>>943
期待しているのは、buf[i]に代入した値が表示したいのですが、
全く関係ない数字が表示されてしまいます。4桁とか

945:デフォルトの名無しさん
09/09/08 07:47:07
部分だけじゃ、どこがおかしいかわかんねえよw

946:デフォルトの名無しさん
09/09/08 08:04:01
いくら間違っても4桁になるのはありえなさそうなんだが。。


947:デフォルトの名無しさん
09/09/08 08:31:55
>>938
まだコードが断片すぎる。コンパイルできるぐらいのまとまったものが
ないと他の人には問題は発見できないよ。



948:デフォルトの名無しさん
09/09/08 09:21:13
printf("%d", (unsigned char) 0xff)が何を表示されるのかって問題に帰結するのかな?
それだったら255だ。これがもしprintf("%d", (char) 0xff)ならば、-1かもしれないが。
それ以外の結果になるというのであれば、他の何かがおかしいのだろうよ。

949:デフォルトの名無しさん
09/09/08 18:03:25
fopen()でファイルを開くコストって結構かかる物なのでしょうか?
今実装してるプログラム、メモリ的な制限から探索範囲を狭めるために、ファイルを結構細分化するつもりなんですが・・・


950:デフォルトの名無しさん
09/09/08 18:15:34
>>949
ベンチマーク取ればいいが、
どんだけ多くても数百個だろ?一瞬。
むしろそれを超えると、OSの最大ディスクリプタ数にひっかかる。

951:デフォルトの名無しさん
09/09/08 18:16:48
>>949
まあストレージの種類によるんじゃないかな。ハードディスク上のファイルだと、
ファイルが分散しててディスクヘッドが頻繁に移動するのはハード的にきつい

952:デフォルトの名無しさん
09/09/08 18:30:14
>>949
48Gテキストの人か

953:デフォルトの名無しさん
09/09/08 18:59:52
頻繁にファイル開いて読み込んでってやってたらかなり遅くなるな。
一回読み込んだ内容はメモリ上にキャッシュして、キャッシュあふれたら
使用頻度低いほうから解放して…みたいな戦略は考えといたほうがいいと思うね。

954:デフォルトの名無しさん
09/09/08 20:04:30
>>949
ファイルのオープンクローズよりも、開いたファイルでシークしたほうがはるかに軽い。

ファイルの一部分をメモリにマップする手法としてメモリマップドファイルがあるよ。
ディスクキャッシュをメモリにマップするんで大きなデーターを効率的にアクセスできる。


955:デフォルトの名無しさん
09/09/08 20:08:25
Hoge::operator[](A,B,C);
hoge[a][b][c];
みたいなことができればいいのになんでできないんだよ

956:デフォルトの名無しさん
09/09/08 20:25:33
>>955
それでオーバーロードを許したらambiguous多発で大変じゃないか

957:デフォルトの名無しさん
09/09/08 20:44:33
まあ仕方ないからhoge[make_tuple(a,b,c)];
とかやってるんだけどもっとクールアンドホットなハック的テクはないわけ?

958:デフォルトの名無しさん
09/09/08 20:46:37
>>957
プロキシーオブジェクト

959:デフォルトの名無しさん
09/09/08 20:53:26
>>955 ちょっと工夫すればできるから。

960:デフォルトの名無しさん
09/09/08 21:02:07
やろうと思えばそりゃできるけどさ
コストとか範囲チェキとか考えると[][][]・・・でできるいいほうほうが浮かばないんだよ

961:デフォルトの名無しさん
09/09/08 21:02:39
>>955,958
ちとめんどいができるじゃんと思ったら
あれプロキシーオブジェクトっていうのか
初めて知った。さんくすw


962:デフォルトの名無しさん
09/09/08 21:02:51
>>957
operator()じゃ駄目なのか?

963:デフォルトの名無しさん
09/09/08 21:03:31
>>962
見た目がまずダサいのでアウト

964:デフォルトの名無しさん
09/09/08 21:07:57
make_tupleにダサイって言われると地味に凹むな

965:デフォルトの名無しさん
09/09/09 11:35:00
同意

966:デフォルトの名無しさん
09/09/09 23:13:55
ある本の息抜き用の演習問題に、「++CではなくC++と名付けられた理由を考えよ」ってのがあったのですが
正解は何なのでしょうか?

967:デフォルトの名無しさん
09/09/09 23:19:55
Cの互換性を保つため

968:デフォルトの名無しさん
09/09/09 23:26:45
あ、なるほど。前置インクリメントだともはやCではないものを意味するってことですね。

969:デフォルトの名無しさん
09/09/09 23:49:38
まあ、今適当に考えただけなんだけどねw
トンチ的な問題だろうから、たぶんそんなに的はずれでもないと思う

970:デフォルトの名無しさん
09/09/10 04:17:25
へんなコストがかかるところ

971:デフォルトの名無しさん
09/09/10 11:40:42
>>970
深いな。

972:デフォルトの名無しさん
09/09/10 13:58:48
//beginコード1
for(int i=0; i<5; i++){
  // コード
}

int i;
for(i=0; i<5; i++){
// コード
}

C++で上か下、どちらのループの方が良い(皆さん使われている)のでしょうか?

973:972
09/09/10 13:59:57
1行目の
//beginコード1
は間違いです、すみません

974:デフォルトの名無しさん
09/09/10 14:03:33
i の中身がループの外でも意味を持つなら後者、持たないなら前者で十分。
どっちが良いとか悪いとかじゃなく。

975:デフォルトの名無しさん
09/09/10 14:35:18
>>974
なるほど、ありがとうございます。

976:デフォルトの名無しさん
09/09/10 15:45:51
>>966
C++ : Cを評価してからインクリメントする
++C : Cをインクリメントしてから評価する

C++ は、まずCを評価してから機能を加えたんだよ。

977:デフォルトの名無しさん
09/09/10 17:13:48
baseクラスがいくつかの仮想メンバ関数を持っています(たとえば、void f1(), void f2())
f1の実装は2パターン、f2の実装も2パターンあります
subクラス側で外部ファイルを参照してそのデータからf1,f2の組み合わせを決定したいです
この場合4種類のsubクラスを作るほかやり方はありますか?

978:デフォルトの名無しさん
09/09/10 17:16:35
仮想関数f1だけのクラスと仮想関数f2だけのクラスをそれぞれ作って2パターンずつ実装し、
subのf1, f2は単にそっちを呼び出す

979:デフォルトの名無しさん
09/09/10 17:17:02
>>977
f1 なり f2 の中で条件分岐すればできる

980:デフォルトの名無しさん
09/09/10 17:27:46
>>978
つまりこういうことでしょうか?
class hoge
{
private:
only_f1_impl *f1_;
only_f2_impl *f2_;

public:
void f1(){f1_->f1();}
void f2(){f2_->f2();}
};
メンバ変数へのアクセスで一手間かかりそうですが、よさそうなので使わせてもらいます
ありがとうございました

>>979
条件分岐は後で大変そうなのでちょっと・・・

981:デフォルトの名無しさん
09/09/10 19:56:01
##ってどういう意味か教えてください

982:デフォルトの名無しさん
09/09/10 20:01:49
そのトークンが現れる位置によって意味が異なるので一概に答えることはできない

983:デフォルトの名無しさん
09/09/10 20:38:19
インスタンスがshared_ptr(かweak_ptr)の形でしか生成できなくすることってできる?

984:デフォルトの名無しさん
09/09/10 21:07:22
>>983
コンストラクタをプライベートにして、ファクトリメソッドを書くとか。


最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5021日前に更新/231 KB
担当:undef