[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2chのread.cgiへ]
Update time : 04/23 14:20 / Filesize : 191 KB / Number-of Response : 803
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


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

C++相談室 part94



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

前スレ
C++相談室 part93
toro.2ch.net/test/read.cgi/tech/1324922431/

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

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

321 名前:デフォルトの名無しさん mailto:sage [2012/03/13(火) 23:12:41.47 ]
エラー復帰してないから
エラーを clear() してから a を読み捨てないと、
永遠に先まで読み進められない

322 名前:デフォルトの名無しさん mailto:sage [2012/03/13(火) 23:24:47.10 ]
>>318さん
>>319さん

回答有難うございます!さっそく直してみて、scanfが実行されるまではいったのですが、
そこからが進みません。
多分、N1hosei関数が悪いんだと思います。
入力したpが、12以上になってしまたらマイナスし、0以上になってしまったら
+する。
pが、jからj+2、またiからi+4の範囲にあったら、+を続け、また同時に、
p == k または p == h になってしまったら、更に+する、
つまるpが、jからj+2、iからi+4の範囲になく、かつkでもhでもない、数になるまで
演算をループさせたいのですが…

323 名前:デフォルトの名無しさん mailto:sage [2012/03/13(火) 23:36:16.35 ]
>>321
エラー復帰とは具体的にどういうことをすればよいのでしょうか?
初心者で申し訳ありません

324 名前:デフォルトの名無しさん mailto:sage [2012/03/13(火) 23:46:00.25 ]
> > エラー復帰とは具体的にどういうことをすればよいのでしょうか?
> エラーを clear() してから a を読み捨てる

325 名前:デフォルトの名無しさん mailto:sage [2012/03/14(水) 00:04:08.42 ]
>>322
>p == k または p == h になってしまったら
It means
if (p == k || p == h) {
}
not
if (p != k && p != h) {
}


326 名前:デフォルトの名無しさん mailto:sage [2012/03/14(水) 00:21:23.51 ]
>>324
何をclearすればよいのでしょうか?
cin.clear();
をやってみたのですがダメでした・・

327 名前:デフォルトの名無しさん mailto:sage [2012/03/14(水) 00:25:04.26 ]
>>326
>a を読み捨てる

328 名前:デフォルトの名無しさん mailto:sage [2012/03/14(水) 00:28:09.60 ]
初心者でもそれくらい調べろよ

329 名前:326 mailto:sage [2012/03/14(水) 15:19:23.31 ]
cin.clear();
cin.ignore();

をしたら解決しました
>>321の言うとおりclearしてignoreしたら正常に動作しました
ありがとうごさいました

ただ何故こうしたらうまくいくのかよくわかりません
上の2つを逆にしてもダメでした
どなたか解説して頂けると助かります



330 名前:322 mailto:sage [2012/03/14(水) 22:08:26.53 ]
>>325

返信有難うございます。
int N1hosei(int i, int j, int k, int h,int &p){//iやjの範囲内だったら、
         if(p > 12){
do{
  p--;
}while((p == k) || (p == h)); //12以上になってしまったら、h,kでなくなるまで-する。h,kでなくなったら、再び一番最初の条件に戻る
return p;
}else if (p < 0){
do{
p++;
}while((p == k) || (p == h));//0以下になってしまっていたら、i,jの範囲外になるまで+して、//h,kでなくなるまで+。で最初の条件に戻る。
return p;
}else{//0≦p≦12、つまり普通の場合は、これ
if((p == k) || (p == h)){
p ++;}
return p;
}
}

このように書き換えて見たのですが、うまくいきません…何が悪いのでしょうか。。
指摘していただけると、大変助かります。

331 名前:デフォルトの名無しさん mailto:sage [2012/03/14(水) 23:49:53.69 ]
いや、そのへん以前に
 j <= p <= j+2

 (j <= p) <= j+2
であってpがある範囲内にあるかどうかの判定になっていないから

332 名前:322 mailto:sage [2012/03/14(水) 23:54:51.40 ]
>331さん

なるほど!
ではpがある範囲内にあるかどうかの判定は、
j <= p && p <= j +2
とでもすればいいのでしょうか。

333 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 00:09:21.33 ]
>>329
ちったぁ考えれ

cin >> num; で a が見つかってエラーになって、cin.clear(); しても、
次の読み込みはまた a からなの
正しく読めるまで先には進まないの
だからまたエラーになるの
これがずっと続くってわけ

334 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 00:10:46.51 ]
初心者ってcinを使いたがるけど、これ初心者には必要ないよね。
つーか誰にも必要ないよね。

335 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 01:05:51.31 ]
>>332
それでいい

336 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 09:58:01.30 ]
継承元のoperator=を使用したい時は、継承したoperator=の中でキャストして呼ぶしか無いでしょうか?
CBaseAを継承し、CSpecとします。

CSpec CSpec::operator=(const CSpec &obj ){
CBaseA *p1 = dynamic_cast <CBaseA *> ( this );
CBaseA *p2 = dynamic_cast <const CBaseA *> ( &obj );
if( (p1 != nullptr) && (p2 != nullptr) ) *p1 = *p2;
}

今はこのようにしています。

337 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 10:04:21.02 ]
>>336 this->CBaseA::operator=(obj)

338 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 10:05:43.28 ]
別にキャストいらんだろ
てかdynamic_castは間違い

339 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 10:14:28.60 ]
>>337
有難うございます!
こういう書き方も出来たんですね!

>>338
ダウンキャストは承知していましたが、継承元のoperator=を呼ぶ必要があったために
やむ終えず>>336の書き方をしていました。
知識不足で恥ずかしい限りです。



340 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 15:03:40.92 ]
キャスト使うならこうだろ
static_cast<CBaseA &>(*this) = obj;

341 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 21:11:41.42 ]
>>334
Linux関連じゃ、istreamに突っ込んでんのをたまに見る

342 名前:デフォルトの名無しさん mailto:sage [2012/03/15(木) 21:12:46.78 ]
>>337
thisもいらんだろ

343 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 16:43:24.83 ]
初心者です。
ppm形式のバイナリファイルの画像を読み込み,pgm形式に変換して配列に画素値を格納したいと考えています。
そこで画素読み込み部分を以下のように書いたのですが

for(int y = 0; y < m_height; y++){
      for(int x = 0; x < m_width; x++){
double r,g,b;
ifs.read((char*) &r, sizeof(double));
ifs.read((char*) &g, sizeof(double));
ifs.read((char*) &b, sizeof(double));
pixels[x][y] = r * 0.299 + g * 0.587 + b * 0.114;
}
}

pixelsの配列内を確認してもどの位置の画素も同じ値になってしまいます
どこが間違ってるのでしょうか;;


344 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 16:46:01.81 ]
オーバーフローしてんじゃね

345 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 17:08:10.03 ]
>>343
そりゃ、1画素がchar 1個分だもんな。
1画素をchar 6個分(double)で読み込みゃそりゃずれるで

346 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 17:15:48.22 ]
doubleは8個分

347 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 17:21:19.83 ]
ppm の形式は知らないけど

char r,g,b;
pixels[x][y] = (double)r * 0.299 + (double)g * 0.587 + (double)b * 0.114;

じゃないの?


348 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 19:14:02.74 ]
テンプレのFAQが英語なんですけど翻訳して読めってことですかコレ

349 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 19:51:44.93 ]
どのプログラミング言語にしても英語が読めたほうが捗るぞ。
なんたって言語作者の9割以上が外国人だしな。



350 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 20:12:39.10 ]
フランスに渡米するみたいなもんか

351 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 20:16:47.83 ]
そりゃ人間の9割以上が外国人なんだから当然だろうよ。

352 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 20:21:36.94 ]
Rubyは貴重だな

353 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 20:26:28.13 ]
英悟は別格で置いとくとしてGoogleで調べると日本語と他の国言語では
Rubyに限らずコンテンツ量が一桁以上違うから
内容の濃淡は知らんけど日本は恵まれてると思うよ

354 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 21:44:20.01 ]
ちょっと日本語がわからない。
もう少しわかりやすく。

355 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 21:45:35.76 ]
いうても、日本語ほど英語と文法の離れてる言語も多くないよな。
多少ひねれば英語化できる言語圏じゃ、母国語資料の少なさなんて
大した問題じゃないんだろ。リーナスやハゲだってフィンランド人だし。

356 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 22:13:22.65 ]
多いよ
SVOは全言語中でむしろマイナー
日本語と同じSOVが45%を占めている

357 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 23:04:35.70 ]
母国語でここまで頑張っている、というのもある意味驚異的なことでして。

358 名前:デフォルトの名無しさん mailto:sage [2012/03/18(日) 23:42:15.55 ]
プログラムに限らず母国語話者に対する期待の違いだろうね
途上国言語で話題振っても誰も付いてこない来れない悲しみと対極にある

359 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 00:02:14.89 ]
そういう国は英語で頑張ってるからな



360 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 00:07:25.08 ]
ボビーオロゴンとかアホそうな振る舞いしてたけど
真面目に話したら、俺らよりはるかに頭いいんだろうな
何せマルチリンガルらしいし

361 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 00:13:38.15 ]
C++に関しては繁体字圏がコンテンツ量で結構頑張ってるな
perlやHaskellなんかだと日本語と比べるべくも無いが

362 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 02:23:37.24 ]
>>344-347
回答ありがとうございます。
やっぱり全然本質を理解できてないですね^^;参考になりました。

もうひとつ聞きたいことがあるのですが
バイナリで書かれたppm形式は画素値はバイナリで書かれていますが、ヘッダはテキストで書かれています。
このときifstreamを使ってファイルを読み込むときはオープンモードはbinaryを指定したほうがいいのですか?
またヘッダのテキスト部分がコメント等で長さが分からない場合に、ヘッダ部分を読み飛ばすにはどうしたらいいのでしょうか?
環境はVC++2010です。

363 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 02:35:39.30 ]
>>362
ppmを厳密に解釈するなら、libpnmのソースと同じようにやるしか。
簡易的には、バイナリで開いておいて行単位に読み出して、コメント行か有効行か判断する。
幅、高さ、濃度最大値を取得できたら、その後はバイト単位で読み出す。

364 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 02:36:02.85 ]
テキストは特別な意味を持ったバイナリなので、やりやすい方を選ぶといいよ。
でも、テキストでオープンすると改行コードをイジっちゃうのでバイナリの意味が変わっちゃうことがあると思う。

365 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 02:56:31.39 ]
今回のケースはバイナリppmの読み込みだから、本体を読むときはテキストモードじゃダメ。

366 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 13:31:21.65 ]
RPGでいういわゆるイベントのクラスを作り起動時にバイナリファイルから読み込ませたいのですが
あるイベントは会話が何ページもあったりと可変長なデータがあるためインスタンスによってサイズはバラバラです

このような大きさがバラバラなデータが詰まったバイナリファイルからデータを読み込むには
普通どのような仕様にしているのでしょうか?全然想像がつきません 環境はVC++2010です

367 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 13:37:28.25 ]
>>366 std::string, std::vector などのコンテナを使う。

368 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 14:08:38.64 ]
ありがとうございます
vectorコンテナでデータを書きこむ時に
データの長さも同時に書きこんでおくといった方法でいけそうですね


369 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 14:11:58.88 ]




370 名前:366,368 mailto:sage [2012/03/19(月) 14:27:55.83 ]
>>369
例えば2つの可変長データを含む構造体をバイナリで保存した場合、
それぞれの長さが分からないと、

読み込む時最初の可変長データの次のデータが可変長データの続きなのか、
それとも次の可変長データなのか判断する方法がないと思ったのですがおかしいでしょうか?

371 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 14:36:19.03 ]
>>366
なんでバイナリなの?
xmlは使えないの?
データ構造とファイル設計は混同しちゃダメだよ。

372 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 14:37:39.25 ]
vector<構造体> msg;
で、必要な数だけpush_backする。

表示する場合は、msg.begin()msg.end()を使えば良いのでは?

373 名前:366 mailto:sage [2012/03/19(月) 15:43:41.33 ]
>>371
xmlが使えるといいなと思うのですが、ファイルの中身が見えてしまうもので
ゲームというジャンルのために暗号をかけたバイナリデータに拘っていました。
本当はバイナリデータなんて使いたくないのですが…。

>>372
きちんとロードできるか試してみます。
表示はそれでいけると思います。

ありがとうございます。

374 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 17:33:23.80 ]
>>373
XMLだって暗号化できるでしょ?
データの記述方法とデータ構造とファイル構造をごっちゃにしちゃだめだよ。

375 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 17:52:10.63 ]
class R{
shared_ptr<A> a_;
public:
weak_ptr<A> getA() {return weak_ptr<A>(a_);}
【or】
A *getA() {return a_.get();}
};
リソース管理クラスを作りたいのですが外部からAを利用したい場合weak_ptr・生ポ(constでない)どちらで取得するのが良いのでしょうか?
※a_の寿命はR内で管理したいのでshared_ptrは公開したくありません


376 名前:366 mailto:sage [2012/03/19(月) 18:37:22.16 ]
>>374
xmlってそんなこともできるのですね知りませんでした、お恥ずかしい限りです。
xmlについて勉強してみます。

377 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 19:34:03.99 ]
大学でC言語習ったけど全くこのスレのレベルについていけない半年ROMるとなんか変わるの?

378 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 19:40:54.84 ]
>>375
weakをlockしたらshared_ptr取れちゃわない?

俺も似たような問題で悩んでweak_ptrのようにオブジェクトの生存確認が
できるけど所有権は主張しない生ポインタとスマートポインタの中間みたいなやつを
実装しようか迷った末やらなかった


379 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 19:45:52.94 ]
>>376
XMLというか、文字列orバイナリについて暗号化かけるだけだから、
別にXMLどうこうじゃないよね
例えば全部の文字についてXORかければ最低でも普通には読めないで高速な暗号化できるわけで。



380 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 20:15:38.57 ]
>>378
ありがとうございます。取れちゃいますね、、
weak_ptrのlock()が *get()になるようなバージョンがあるといいんですが。
素直にポインタで公開するのが妥当なのでしょうか?

381 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 20:20:29.26 ]
普通に生ぽでいいんじゃね
どうせ呼んでる間は死なないんだろ

382 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 22:06:28.71 ]
>>377
さすがに半年ROMったらかわるっしょ

383 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 22:07:30.27 ]
>>380
ハンドルを使う方法もあるけど、
実際ポインタで困ることはそんなに無い気がする

384 名前:デフォルトの名無しさん mailto:sage [2012/03/19(月) 23:53:51.31 ]
>>377
とりあえず自分に必要なものを作ってみて、実用しないとニーズの比重がわからないよ。

385 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 13:37:16.64 ]
C++では、Cのように関数の引数の型宣言を)と{の間に
書けないとのことですが、引数が多い場合は、()の中に
改行して書けということでしょうか?

386 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 14:00:00.62 ]
そうだよ

387 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 14:54:19.71 ]
今時そんな構文使えるCコンパイラあるんけ?

388 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 15:09:18.14 ]
Ruby開発者がなぜかこれにしがみついてたなあ

389 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 15:18:26.47 ]
むしろ使えないCコンパイラがどんだけあるんだよって話



390 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 15:20:35.12 ]
CならC99専用でもない限り使えると思うぜ
まあ極めて問題のある構文だから使わない方がいいが

#include <stdio.h>

int foo(a, b)
 int a, b;
{
 return a + b;
}

int main()
{
 printf("%d\n", foo(1.2, 2));
 return 0;
}

実行結果: 1931896422

391 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 16:20:35.89 ]
Code Pad上ならエラーになるな
まぁGCCの問題だけど
codepad.org/ceAMmTJC

いま動くコンパイラって何が有るの?
16bit時代のコンパイラ?

392 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 16:23:00.68 ]
>>385
int Function
(
     int arg1,
     int arg2,
     int arg3,
)
{
     return 0;
}

初めて見たときは寒気が走ったがこういう書き方するところも有る。

393 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 16:26:01.05 ]
全角スペースでエラーになるのがgccの問題とか言っちゃう男の人って・・・

394 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 16:41:08.16 ]
>>391
あいたたたたた

395 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 16:46:28.00 ]
>>392
最後のコンマは書けないぞ

俺はこうか

int Function(
 int arg1,
 int arg2,
 int arg3
) {
 return 0;
}

こうだな

int Function(
 int arg1,
 int arg2,
 int arg3)
{
 return 0;
}

エディタとの相性に合わせて使う

396 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 16:47:47.41 ]
メンゴメンゴやっぱうごいたわ
codepad.org/3TQKnfBZ

397 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 16:49:06.61 ]
>>395
カッコの揃える派とカッコどうでもいい派に好みは別れるよね

398 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 16:56:42.52 ]
既存にあわせちゃう

399 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 16:59:09.59 ]
>>396
この書き方だと型チェックが行われないので
1.2 が double 値のままスタックに積まれて、
それを int 値として取り出した結果、無茶苦茶なことになっている
簡単に未定義動作が起きる極めて危険なものなので
今時決して使ってはいけない



400 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 17:05:06.31 ]
>>390
C99でも廃止予定事項なだけで使えるぞ。

401 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 19:49:26.83 ]
385です。先輩方いろいろ教えて下さり有難うございます。
括弧の中に書くのはやっぱり慣れてないというのもあって、
不細工な気がしますね。諦めてpascalに行こうかしら。

402 名前:デフォルトの名無しさん mailto:sage [2012/03/20(火) 23:10:23.09 ]
その方がいいと思う。

そんな危ない書き方を慣れてないという理由だけで継続するとかとんでもない話だし。

403 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 08:42:18.70 ]
>>399
これでOK。
codepad.org/oyP2YgaY

型を省略したらint型ってことだけど、危なくてしゃぁないな。

404 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 11:07:25.08 ]
以前このスレッドでラムダ関数(ラムダ式)の再帰が出来ると聞いたのですけど。
具体的にはどのようにやるのですか?
例:
ある型 f;
f=[ & f ](int a){if(a==0)return; else f(a-1 )};

ってかんじですか?

405 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 11:47:34.68 ]
ttp://ideone.com/Vdw5h

406 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 11:50:18.46 ]
>>405
ありがとうございます。
autoとfunctionの違いは教えてくれませんよね?

407 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 11:55:23.10 ]
>>406
ググれ

408 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 23:46:09.58 ]
メモリ断片化対策としてメモリプールを使ったメモリ確保を実装したいのですが
STLや標準ライブラリなどはいちいち自前のアロケータを指定する方法しかないんでしょうか?

409 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 23:49:18.96 ]
それ以外のどんな方法がほしいんだ?



410 名前:デフォルトの名無しさん mailto:sage [2012/03/21(水) 23:49:43.38 ]
>>408
プールの実装に確保サイズ以外の情報を使わないのであれば ::operator new () を
置き換えるという方法もあるよ。

411 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 00:01:40.50 ]
>>410
new/delete演算子をグローバルなオーバーロードをすれば
STLや標準ライブラリからも呼ばれるということでしょうか?

412 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 00:12:39.92 ]
>>411
そういうこと。少なくともアロケータ引数を取るテンプレートはデフォルトで std::allocator を
使うことになってて、デフォルトの std::allocator 実装は ::operator new を使うことになってる。

この場合の ::operator new/delete の定義はオーバーロードじゃないけどね。
あとSTLも標準ライブラリの一部な。

413 名前:デフォルトの名無しさん mailto:sage [2012/03/22(木) 00:20:42.01 ]
>>412
ありがとうございます。
やってみます。

414 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 01:16:08.89 ]
newを自作関数に置き換える手法も容易して欲しいよな。

415 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 03:36:11.12 ]
>>414
それが >>410-413 じゃないのか?

416 名前:デフォルトの名無しさん mailto:sage [2012/03/23(金) 08:52:23.54 ]
>>414
何言ってんだかわかんねーな

417 名前:デフォルトの名無しさん mailto:sage [2012/03/24(土) 01:09:01.95 ]
operator new で乗っ取れるんだが、ヘッダにインラインで書けないんだよ

418 名前:デフォルトの名無しさん mailto:sage [2012/03/24(土) 01:34:29.07 ]
>>417
グローバルに置き換えるんじゃ何か都合が悪いのか?
都合が悪い、指定した対象だけに絞りたいとすれば、それは
アロケータでの指定を行うのが妥当ということにはならないのか?

419 名前:デフォルトの名無しさん mailto:sage [2012/03/24(土) 23:34:30.02 ]
高速化のために自作newをインライン展開したいんだけどね。
できる処理系と出来ない処理系がある。



420 名前:デフォルトの名無しさん mailto:sage [2012/03/24(土) 23:38:11.15 ]
クラス内に new 置けばできるでしょ。

421 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 01:48:53.74 ]
きょ、局所的・・・。なんでもないよ。






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

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

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