【初心者歓迎】C/C++室 Ver.70【環境依存OK】at TECH
【初心者歓迎】C/C++室 Ver.70【環境依存OK】 - 暇つぶし2ch20:デフォルトの名無しさん
09/11/22 22:19:09
>>17
分かってないなぁw
改悪になってる・・・

ひょっとして"hogehoge"用に領域が9バイト確保された後、コピーされると思っていない?
違うんだなぁ、これがw。
プログラムがRAMにロードされたとき、
データとして"hogehoge"はメモリ上に展開されて、
その代入ではホゲ文字列の先頭アドレスがstrに設定されるだけ。

分かる?スタティックにする理由は何?

21:デフォルトの名無しさん
09/11/22 22:29:15
>>20
つりか?

22:デフォルトの名無しさん
09/11/22 22:30:17
>>20

23:デフォルトの名無しさん
09/11/22 22:41:34
コピーされなかったら配列は永遠に初期化できないじゃないか。
char *str = "hogehoge"; ならともかく。

24:デフォルトの名無しさん
09/11/22 22:43:40
コンパイル時に数が決まるから strcpy() よりは早いけどな。
まあ、ループ展開しないと比較演算は必要だから同じか。

25:20
09/11/22 23:01:28
>>23
おぉ、すまんすまんw。
自分のコーディングスタイルと違うので間違っちゃったw。

char str[]="hogehoge";

ってすると、スタックに積まれてたw。
これは危険だ!

なにげに勉強になっちゃったw。
では、さらばだ!


26:デフォルトの名無しさん
09/11/22 23:37:40
>>6
いや、数珠つなぎにしたいとかじゃなくて、無限に要素を増やしたいから、どうしたものか・・・と。
で、自分がとりあえず考えた方法があれだったっていう

>>8
だなぁ・・・。
やっぱ、そうしかないのかな?



とりあえず、回答ありがとう。

27:デフォルトの名無しさん
09/11/22 23:50:55
>>5
遅くていいならディスク上にファイルとして配列を持ち、ガリガリやれよ
相当遅いが、1TBの配列だって持てるわけだ

28:デフォルトの名無しさん
09/11/23 00:02:45
*dataと*tmpを用意、*dataに大きさNの配列を動的に確保
要素数がNを超えそうなら*tmpに大きさ2Nの配列を確保して*dataの内容をコピー後ポインタをスワップ
スワップ後のtmpを解放

まあただのvector実装なんだが

29:デフォルトの名無しさん
09/11/23 00:09:32
そも無限は無理。

30:デフォルトの名無しさん
09/11/23 01:51:22
>>26
だから、無制限に要素を増やそうとすると数珠繋ぎとかになるんだよ
じゃなきゃ、溢れた時にでかい領域を再確保してコピーするとかな

で、それらをきっちりやってくれるのがSTLコンテナだが、原理知らないで使うと
えらいパフォーマンス落としたりもするから、一度自分でそれらしく書いてみても
いい
理屈が理解できたら、STLコンテナを使っちゃった方が安心で軽くて楽だが

31:デフォルトの名無しさん
09/11/23 01:56:40
128KBくらいのブロックをつなげろよ。
HDDのクラスタと同じようなもん。
vectorなどは、再配置するから効率悪い。
ブロックで管理すれば再配置無し。

32:デフォルトの名無しさん
09/11/23 02:02:35
実質ブロックで管理(仕様では明記してないけど)してて
それなりに高速なデータ構造となるとstd::dequeかな。

悩んだらとりあえずdequeつかっとけというのが俺の経験則。


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