[表示 : 全て 最新50 1-99 101- 201- 2chのread.cgiへ]
Update time : 10/05 08:05 / Filesize : 60 KB / Number-of Response : 263
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【初心者歓迎】C/C++室 Ver.50【環境依存OK】



1 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 00:00:47 ]
エスケープシーケンスやWin32APIなどの環境依存なものでもOK。
ただしその場合、質問者は必ず環境を書きましょう。
※sage禁止です(と代々スレに書いてありますが自己判断で)。
【前スレ】
【初心者歓迎】C/C++室 Ver.49【環境依存OK】
pc11.2ch.net/test/read.cgi/tech/1203478421/
【アップローダー】(質問が長い時はココ使うと便利)
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm

51 名前:50 mailto:sage [2008/03/15(土) 11:46:16 ]
>そもそも>>48のコードを見ると、newしているとのはintとint*だけで、ポインタのポインタ(int**)はnewしていないが
なんか変なこといってた。ゴメン、無視して。

52 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 12:00:24 ]
何をやりたいのかよく分からないという点に間違いは無いから
完全に無視されても困るかな。

こういう関数があった場合、

void show(const int* const* array_2dim, int i_size, int j_size) {
 for(int i = 0; i < i_size; ++i) {
  for(int j = 0; j < j_size; ++j) {
   std::cout << array_2dim[i][j] << ", ";
  }
  std::cout << std::endl;
 }
}

こういう風に使うなら new なんて要らないし、

const int array0[] = { 1, 2, 3 };
const int array1[] = { 4, 5, 6 };
const int array2[] = { 7, 8, 9 };
const int* const array_2dim[] = { array0, array1, array2 };
show(array_2dim, 3, 3);

こういう風に使うなら new を2回使う。

int** array_2dim = new int*[3];
for(int i = 0, n = 1; i < 3; ++i) {
 array_2dim[i] = new int[3];
 for(int j = 0; j < 3; ++j, ++n) {
  array_2dim[i][j] = n;
 }
}
show(array_2dim, 3, 3);

53 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 12:06:01 ]
ていうかロックってどこから出てきたの?

54 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 12:08:31 ]
メモリの確保のことをロックとか俺用語使ってる気がする。

55 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 12:12:30 ]
というと、もしかしてmalloc()はマ・ロック?

56 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 12:27:11 ]
マルロック

57 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 12:35:57 ]
えむ あ ろっく

58 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 12:42:53 ]
memory allocation lock

それをロックするなんてとんでもない!

59 名前:デフォルトの名無しさん [2008/03/15(土) 16:03:21 ]
マルチスレッド処理を勉強してます。
現在、別スレッドからメインスレッドで処理するときはPostMessageを使ってますが、
他によい方法はありますか。



60 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 16:13:35 ]
良いかどうかわからないけど、自前で処理キューを作って
メインループをMsgWaitForMultipleObjectsでまわすとか・・・

61 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 16:37:13 ]
>>60
よくこの文章の意味が判ったなぁ。
>別スレッドからメインスレッドで処理する

62 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 16:41:21 ]
普通に解るけど


63 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 17:53:54 ]
マルチスレッドスレか Win32API スレに行った方がいいと思うが。

64 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 21:02:32 ]
とあるメソッドの中で
オブジェクトを生成してあれこれする時

newして操作するのと
一時オブジェクトとして生成して操作するのは
どちらのほうが一般的なんでしょうか?

65 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 21:07:18 ]
new する必然性があるなら new するし、
そうする必然性が無いなら積極的には new しない。

66 名前:デフォルトの名無しさん [2008/03/15(土) 21:12:33 ]
vectorで、循環しているやつをつくりたいときはどうすればよいですか?
つまり、
vector<int> a(10);
のとき、
a[10]と書いてa[0]の意味になってくれるとうれしいんですが。
いまは添字をif文で判定してます。

67 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 21:13:55 ]
i が必ず正なら a[i % 10] でいける。

68 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 21:14:01 ]
継承してoperator[]をオーバーライドすればいいんじゃね。
イテレータはしらね

69 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 21:18:42 ]
仮想デストラクタでない vector の継承は危険だな。
内包して似たクラスを作った方がいい。



70 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 21:21:36 ]
もしかしたらboost.circular_bufferでいいのかもしれない

71 名前:48 mailto:sage [2008/03/15(土) 21:38:34 ]
>>50
ありがとうございます。

ポインタのポインタはローカル変数で使うのでなく、
関数内で作った後、関数外の色んな場所で使います。

色んな場所で使うんですが、
中身を一括で変更しないといけない時があったので、
ポインタのポインタにしました。

72 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 21:40:36 ]
52 は無視か・・・。

73 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 22:22:23 ]
>>72
まあそういうこともある。


74 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 22:46:55 ]
某RPGの白魔法風にメアロケとかなんかそういう呼び方ないの?w

75 名前:48 mailto:sage [2008/03/15(土) 22:54:31 ]
いや、無視したわけじゃないんですが。
イマイチ言わんとしていることがよく分かりませんでした。

下の用途でも、
int** array_2dim = new int*[3]; ←は、
int* array_2dim[3]; ←でいいんじゃなかと思うんですが。

76 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 23:00:23 ]
>>74
ねぇよw
一瞬何のことかとw

77 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 23:04:13 ]
>>75
配列のサイズがコンパイル時に決まるならそれでいいし、
コンパイル時に決まらないなら new するしかない。

78 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 23:08:10 ]
new するしないかはやりたいことによって決まるのであって、
int** を使うから new を使うとかそういうことで決まるものではない。

79 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 23:11:52 ]
コンストラクタの中で冷害が起きるとデストラクタは呼ばれるの?



80 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 23:12:40 ]
オブジェクトの生成が終わってないのでデストラクタは呼ばれない。

81 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 23:12:57 ]
>>79
冷害がおきると米が不作になります

82 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 23:13:05 ]
まだできてないモノの後始末をどう付けろというのだ

83 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 23:13:19 ]
でも構築済みのメンバ変数のデストラクタは呼ばれる。

84 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 23:13:23 ]
>>79
構築済みの基本クラスとメンバ変数の分は呼ばれる
自分のは呼ばれない

85 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 23:26:08 ]
一次元配列のアドレスを関数に渡して手を加えたいんだけど、
できれば例文を使ってやり方を示していただけませんか

86 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 23:27:37 ]
>>79
他の人が書いてる通り、構築済みメンバのみ呼ばれる。
あと、コンストラクタから例外を出してはいけないという迷信を信じないようにね。

87 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 23:31:58 ]
>>85
#include <iostream>

void add(int* x, const int* y, int size) {
 for(int i = 0; i < size; ++i) {
  x[i] += y[i];
 }
}

void show(const int* x, int size) {
 for(int i = 0; i < size; ++i) {
  std::cout << x[i] << ", ";
 }
 std::cout << std::endl;
}

int main() {
 int a[5] = { 1, 2, 3, 4, 5 };
 int b[5] = { 5, 4, 3, 2, 1 };

 add(a, b);
 show(a);
}

88 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 23:35:15 ]
>>87
ありがとうございます。メモ帳に保存して勉強します。

89 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 23:36:24 ]
サイズ渡すの忘れてたよw

 add(a, b, 5);
 show(a, 5);

な。



90 名前:デフォルトの名無しさん [2008/03/15(土) 23:41:30 ]
>>67-69
ありがとうございます。とりあえず67さんの方法でやってみようと思いますが、68と69さんの方法って
どうやればいいですか?いちおうこんな感じに書いてみたのですが、template <class T>
class cvector : public std::vector<T>
{
T operator[](int n) {
return this[n % this->size()];
}
};


91 名前:デフォルトの名無しさん [2008/03/15(土) 23:43:06 ]
pc11.2ch.net/test/read.cgi/streaming/1202224933/
740 :ゴキ ◆KBolwFjGFs :2008/03/02(日) 16:10:33 ID:XSKtFMSK0
いつになったら五期鬼太郎43・44・46・47話うpしてくれるんですか><
750 :ゴキ ◆KBolwFjGFs :2008/03/02(日) 17:10:36 ID:XSKtFMSK0
いつになったら五期鬼太郎43・44・46・47話うpしてくれるんですか><
762 :ゴキ ◆KBolwFjGFs :2008/03/02(日) 23:15:47 ID:XSKtFMSK0
いつになったら五期鬼太郎43・44・46・47話うpしてくれるんですか><
772 :ゴキ ◆KBolwFjGFs :2008/03/03(月) 02:23:17 ID:FCp+FnG70
いつになったら五期鬼太郎43・44・46・47話うpしてくれるんですか><
811 :ゴキ ◆KBolwFjGFs :2008/03/04(火) 00:55:53 ID:4/B+VsKZ0
いつになったら五期鬼太郎43・44・46・47話うpしてくれるんですか><


92 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 23:46:06 ]
assert(n >= 0); がないと危険だな。

まあそれはいいとして、
vector を継承すると

std::vector<T>* v = new cvector<T>;

とした場合に delete v; の動作が未定義だし、
vector<T>& に渡せるけど、
operator[] が仮想関数じゃないから危険だな。

93 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 23:47:10 ]
this 使うなら (*this)[n % size()] だし、
operator[](n % size()) でもいいな。

94 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 23:51:04 ]
いくらなんでも std::vector<T>* は無いだろw

95 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 23:52:04 ]
int -> size_t

public -> private

96 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 23:55:57 ]
n に負の数を渡した場合のチェックが出来ないのが size_t の悩みどころだな。
リングバッファだと 「範囲外のインデックス」 ってのが存在しないから
0 <= n && n < size() なら有効・・・とかできないし。

97 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 00:00:29 ]
リングバッファならむしろ負の数サポートが欲しいところ。
v[-1] == v[size()-1]

98 名前:デフォルトの名無しさん [2008/03/16(日) 00:26:29 ]
>>92-97
ありがとうございます。
アドバイスを総合して実装してみたのですが、コンパイルが通りません。
#include <iostream>
#include <vector>
using namespace std;
template <typename T>
class cvector : public std::vector<T> {
T operator[](const int n) const {
int index = (n >= 0) ? n : this->size()-n;
// assert(n >= 0);
return (*this)[index % this->size()];
}
};

int main(){
cvector<int> vec;
vec.push_back(11);
cout << vec[0];
return 0;
}
コンパイルエラーはこうです。
test.cpp:6: error: 'T cvector<T>::operator[](int) const [with T = int]' is private//T operator[](const int n) const {の行です。
test.cpp:15: error: within this context // cout << vec[0]; の行です。
どうかもうすこし教えてください。



99 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 00:28:34 ]
>>98
エラーメッセージそのまんまだろ。何がわからないんだ?



100 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 00:30:18 ]
private ってのは危険だから private 継承しろって意味じゃないのか

101 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 00:43:03 ]
operator[]の前行にpublic:

102 名前:デフォルトの名無しさん [2008/03/16(日) 00:45:09 ]
>>100
private継承しようとするとpush_backが使えなかったので、public継承にしました。
>>99
これってどう継承してもよびだせないということですか?



103 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 00:51:53 ]
class cvector -> struct cvector

>int index = (n >= 0) ? n : this->size()-n;
this->size()-nだとリングにならないよ

(n >= 0) ? n : (size() - (-n % size()));

あと、&nbsp;と書くとレスに連続した半角空白を入れられる

104 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 00:53:38 ]
operator[] が private だから呼べねーよ!
ってコンパイルエラーだな。

105 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 01:05:00 ]
負の数を認めない型の値の最上位ビットが立っているかどうかなら、
1 << (sizeof(type) * 8 - 1) とand取ってifすれば得られるぜ。

106 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 01:10:48 ]
そこまでして符号無しにこだわる必要は無いと思うというか、
その時点で引数を符号無しにするべきではないと思うというか。

107 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 01:26:05 ]
符号なしにしないとオーバーライドできない、っていうか、
operator[]はvirtualじゃないからオーバーライドできない。

108 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 01:26:55 ]
ならオーバーロードで

109 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 01:32:28 ]
そもそも vector を public 継承しようとしている時点であれというか。
vector とは性質的に別ものだから内包して自分でメンバ定義していくのが正しい。
単純な委譲で済む関数はインライン関数にしとけばインライン展開されるだろうし。

どうしても継承したいなら private 継承して、
size() とかそのままでいい関数は using する。



110 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 01:34:09 ]
つうか普通このケースでは包含だよなぁ

111 名前:デフォルトの名無しさん [2008/03/16(日) 01:42:27 ]
質問よろしいですか?

0 1 2
3 4 5
6 7 8

このようになっている時にクラーメルの公式のように(掛け算ではありませんが)
1+5+6というふうにするにはfor文でどのようにすればいいのでしょうか?

112 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 01:57:23 ]
int data[3][3]; とするならば

int sum = 0;
for(int i=0; i<3; i++)
{
  int x = data[i][(i + 1) % 3];
  sum += x;
}
// sum = 1+5+6 = 12

113 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 02:01:02 ]
3つしかあり得ないならハードコーディングするのも手だと思う。
for 使うなら % だろうけど、逆向きの時は少し注意が必要(i が負になるとマズい)。

114 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 02:05:16 ]
配列アクセス用のインデクステーブルを作るとか

115 名前:デフォルトの名無しさん [2008/03/16(日) 02:05:33 ]
>>112,113
すいません、言葉が足りてませんでした
配列は固定ではなくN×N行列で
ポインタを*paとする時

pa    pa+1  pa+2
pa+3   pa+4  pa+5
pa+6   pa+7  pa+8

でどう求めるかということでお願いします

116 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 02:12:47 ]
[i][(i + 1) % 3] を [i * N + (i + 1) % N] にするだけでしょ。

117 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 02:14:36 ]
for 使うなら % だろうけど、逆向きの時は少し注意が必要(i が負になるとマズい)。

118 名前:デフォルトの名無しさん [2008/03/16(日) 02:21:37 ]
>>116

i=0  0*3+(0+1)%3 = 0
i=1  1*3+(1+1)%3 = 3
i=2  2*3+(2+1)%3 = 7

こうなるんじゃないんですか?

119 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 02:23:30 ]
>>118
頭大丈夫か



120 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 02:26:40 ]
小学生からやりなお(ry

121 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 02:26:50 ]
>>118
とりあえず今日はもう寝とけ

122 名前:デフォルトの名無しさん [2008/03/16(日) 02:26:54 ]
>>119
すいません勘違いしてました
どうもありがとうございました

123 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 11:30:09 ]
       ∧∧
       / 中\
      (  `ハ´) いつになったら福田康夫は日本人が犯人だと認めるアルか
      ( ⊃┳⊃
      c(_)ヘ⌒ヽフ 【中国産・毒ギョーザ】日本人が“犯人”? 共同通信の日本人記者拘束で中国のネット世論沸騰★5
     (朝日(-@∀@) mamono.2ch.net/test/read.cgi/newsplus/1204264902/
≡≡≡ ◎―◎⊃⊃ キコキコ

124 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 11:40:32 ]
毒餃子は中国工場内での混入がほぼ間違いなくなったよな。
濃度は3000ppmって。。漬け置きレベルらしいな。
シナはどこまでも外道。オリンピック開催させるなよ。

125 名前:デフォルトの名無しさん [2008/03/16(日) 11:41:33 ]
102です。以下のように実装してみて、動作することを確認しました。でも2点質問させてください。
(1)vectorを継承した方で、size()はusingsしておけばいいといわれましたが、やり方がわかりません。
でも知りたいのでどうか教えてください。
(2)同じくvectorを継承した方で、public継承するのはよくないと言われましたが、(繰り返しになりますが)
private継承するとpush_back等のvectorクラスの機能が使えないと思います。ここはどうするべきなのでしょうか?
template <typename T>
class ring_vector {
public:
  T operator[](const int n) const {
    int index = (n >= 0) ? (n % v.size()) : (v.size()-(-n % v.size()));
    return v[index];
  }
  std::vector<T> v;
};

template <typename T>
class ring_vector2 : public std::vector<T> {
public:
  T operator[](const int n) const {
    int index = (n >= 0) ? (n % this->size()) : (this->size()-(-n % this->size()));
    return std::vector<T>::operator[](index);
  }
};




126 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 12:00:48 ]
>>125
(1)レスを追ってないから知らん

(2)転送関数

127 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 13:00:00 ]
Linux+gccでCPUの型番や周波数などを取得する方法を教えてください

128 名前:103 mailto:sage [2008/03/16(日) 13:00:16 ]
>int index = (n >= 0) ? (n % v.size()) : (v.size()-(-n % v.size()));
>>103のは元のソースがreturn [index % size()];なので、それを前提としてたんだけど・・・。

return v[index];にするなら、負の数の方も、もう一度%しないと、
n == -size() のとき、return v[size()]; になっちゃうよ。

129 名前:103 mailto:sage [2008/03/16(日) 13:02:20 ]
return v[index];

return v[index==size()?0:index];
にするのでも良いけど。



130 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 13:04:24 ]
>>125
ring_vectorの方で良いよ。
継承するの変だと思うし。

131 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 13:04:53 ]
system("cat /proc/cpuinfo");

132 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 13:12:54 ]
クラスで場合によっては定義しない変数は宣言できますか?
ありましたら、どうすればいいか教えてください。

133 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 13:17:07 ]
template <typename T>
class ring_vector3 : private std::vector<T> {
typedef std::vector<T> parent;
public:
T operator[](const int n) const {
int index = (n >= 0) ? (n % this->size()) : (this->size()-(-n % this->size()));
return parent::operator[](index);
}
using parent::push_back;
};

みたいな。

134 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 13:24:34 ]
>>132
質問をもう少しkwsk

135 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 13:26:44 ]
>>132
使わなければ

136 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 13:32:21 ]
使わなくても定義は必要じゃね

137 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 13:38:31 ]
だから、仮想デストラクタを持たないvectorを継承すんなよw

138 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 13:40:56 ]
そろそろvirtualから離れようぜ

139 名前:133 mailto:sage [2008/03/16(日) 13:48:13 ]
何か問題が?



140 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 13:53:31 ]
>>139
使い方によってはvectorのデストラクタが呼ばれないことがある。

141 名前:133 mailto:sage [2008/03/16(日) 13:56:17 ]
使い方?vector<T> *にキャストする話?
出来るの?private継承なのに。

142 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 14:14:38 ]
>>141
定義をそれ以上いじらなければ問題ないっしょ。
std::vector<T>* p() {return this;}
みたいなメンバ関数を追加したりすれば、
privateな継承でも基底のポインタが得られるので、
単にprivate継承であるというだけで常に安心できるわけではない。

143 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 14:17:26 ]
それをdeleteしたら吹くw

144 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 14:23:24 ]
そんなメンバをつくって、しかもdeleteしちゃうような輩は、
vector<int> v;を使わせても
delete &v[1];とかするだろうなw

145 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 14:25:01 ]
イテレータは循環するようにしなくていいのか?

146 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 14:28:34 ]
ちょw end()どこだよw
コンテナじゃないんだし、いらないっしょ

147 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 14:35:21 ]
どのイテレータをインクリメントしてもendと等しくはならない、とか

148 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 14:46:28 ]
STLのアルゴリズムに食わせられないじゃん

149 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 14:48:38 ]
>>134-135
extern BMPImgData bmpA;
extern BMPImgData bmpB;

class BMPImgData {
public:
HDC mHdc;
int w; //幅、高さ
int h;
int anmx;
int mv;
//・・・・
//↓bmpAには不要
POINT ptgt; //リアルマップ座標(移動)0~10
POINT tgt; //目標リアルマップ座標
POINT Root[MAX_MAPX][MAX_MAPY]; //マップ座標
//・・・
BMPImgData();
~BMPImgData();
};
多次元とか宣言すると不安で不安で。
もしかして宣言ってメモリ確保しなければ全然処理重くならないですか?
すげえ初歩ですが。



150 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 14:53:38 ]
メモリを喰うのが嫌ならクラスを分けるか、
動的に確保するしかないかと

151 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 15:03:56 ]
>>149
bmpAに不要なメンバを BMPImgData から除去して、BMPImgDataを継承した別クラスBMPImgData2にそのメンバを追加すれば?
BMPImgData bmpA;
BMPImgData2 bmpB;
もちろん、クラス名は適切に。







[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](*・∀・)<60KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef