スレを勃てるまでもないC/C++の質問はここで 9at TECH
スレを勃てるまでもないC/C++の質問はここで 9 - 暇つぶし2ch28:25
09/04/19 02:04:35
>>27
理解はしていましたが文章の書き方がまずかったです(^^;)
ご指摘ありがとうございます。
他にはいかがでしょうか…?

29:デフォルトの名無しさん
09/04/19 02:26:19
>>25
間違ってるところはない。

30:デフォルトの名無しさん
09/04/19 02:26:49
>>26
俺もオセロ作ったけどCPUなしなら1か月もかからなかった

31:デフォルトの名無しさん
09/04/19 02:27:08
>>28
コンパイラあるんなら自分でそれぐらい確認出来るだろ
エアコンパイラ状態?

32:デフォルトの名無しさん
09/04/19 06:02:56
プログラム内で使う std::exception 派生の例外用のクラスを作って、throw(…) なんかも
きっちり書いてみたんですけど、でも例えば関数内で new に失敗して std::bad_alloc が
発生するようなケースを考えていると、結局は全て throw(std::exception) と書かなきゃ
いけないような気がします。throw の宣言はどう書くのが一般的 (慣例的になるか?) なんでしょうか。

33:デフォルトの名無しさん
09/04/19 06:21:34
ANSI ではポインタをバイト単位のリニアな数値だなんて規定はしていなかったと思うが。
だから a と b が NULL 以外の同じメモリブロックを差していても a==b が true になる
保証はないし、当然ポインタ同士の減算結果も保証してない。具体的には DOS のような
16bit マシン上のラージメモリモデルなんかは ++ が sizeof(型) 増える保証なんてない。

34:デフォルトの名無しさん
09/04/19 06:26:06
同じ集成体上のオブジェクトを差しているポインタ同士の減算は定義されていて、
要素数にしていくつ離れているかを返すことになっている。

35:デフォルトの名無しさん
09/04/19 06:36:00
集成体って配列の事? 構造体も含む?
まぁ ANSI で正確にはどう規定されているかとかまでは知らんけど。

36:デフォルトの名無しさん
09/04/19 06:42:21
構造体の中身は要素同士が連続してる保証がないから、構造体メンバのポインタの減算はできないはず。

37:デフォルトの名無しさん
09/04/19 06:53:00
far ポインタナツカシス

38:14,16
09/04/19 10:48:17
>>20-21
丁寧にありがとうございます。書いてないけど知りたかった改行の方法まで書かれてて、本当に助かります。
ところで、「%*c」というのはどういう意味なのでしょうか?

39:デフォルトの名無しさん
09/04/19 10:49:01
ポインタの概念はわかるんですが、じゃあ何に使うの?って感じです。

40:デフォルトの名無しさん
09/04/19 10:53:30
>>39
ポインタの使用例:

#include <stdio.h>
void f(int *p) { *p = 3; }

int main(void)
{
int i;
i = 100;
printf("%d\n", i);
f(&i);
printf("%d\n", i);
return 0;
}

41:デフォルトの名無しさん
09/04/19 10:57:04
>>38
URLリンク(ja.wikipedia.org)

42:デフォルトの名無しさん
09/04/19 11:34:03


43:デフォルトの名無しさん
09/04/19 11:34:45
>>40
ありがとうございます。

44:デフォルトの名無しさん
09/04/19 11:41:37
すまんが質問させてくれ

今とあるクラス(Aと過程)を更に別のクラス(Bと過程)で使おうとしてるんだが
Bクラスの中では、Aクラスを可変で使おうと思ってる

そこでAクラス内部にリスト処理を追加しようか、Bクラス内部で追加しようかで悩んでる

具体的には
Aクラスを↓のように追加するか
class AClass
{
private:
AClass *next,*prev;
};

Bクラスで
class BClass
{
private:
typedef struct _tag_hogehoge{
AClass *pA;
struct _tag_hogehoge *next, *prev;
} hogehoge;
};


果たしてどちらがいいだろうか?
オブジェクト指向ならAクラスに追加だけど
高速性を重視にしてるから、Bクラスの方が早いんだよね

みなさんならどうしますか?

45:デフォルトの名無しさん
09/04/19 11:43:52
>>44
std::list使う。

46:デフォルトの名無しさん
09/04/19 11:47:13
オブジェクト指向なら、Aが前後のインスタンスを意識するのは不自然じゃね?

47:デフォルトの名無しさん
09/04/19 11:54:49
>>45-46
レス有難うございます

>>45
std::listですが、これはランダムアクセスが遅い為に考慮しませんでした
ランダムアクセスでも高速で取得出来る様な独自のリスト処理を
AクラスかBクラスのどちらかに追加しようと思っています

>>46
うーん、そうでしょうか?
オブジェクト指向だからこそ、Aクラス自信のインスタンスは
Aクラスで処理するものだと考えております

48:デフォルトの名無しさん
09/04/19 12:07:31
原則としてAは自分自身のことだけ知っているべきで、自分がどう管理されるかは
管理するオブジェクトが知っていればいいんじゃないかな?
自分自身に next,prevがひっついてるとリスト構造を強要されるけど、
無ければ配列やハッシュマップなど他の管理方法をとることもできる。
あくまで原則論で、高速化などのために崩すこともあるけど。


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