ページ 11

【戦略シミュ】ユニット管理方法でのリスト構造について

Posted: 2009年11月10日(火) 20:04
by yskey
どうもお世話になっています。yskeyです。
ただいまDxlibで戦略シミュを製作中なのですが、前回質問したとき、
ユニット(兵士、城、、、)の管理にリスト構造体を使用すればよいと聞きました、、、
そこでなんですが、リスト構造を作ったとしてどのように特定のデータを得ることができるのでしょうか?

構造体の中にint IDという変数を用意して最初から順に検索していき、目的のIDがあるところのデータを習得、、、

という感じですか?しかし、データが1000個ぐらいにまで膨大になって頭から検索は有効なんでしょうか?

そもそもリスト構造がまだまだ熟知できてないのでワケノワカランことを言っていたらご指摘ください・・・

Re:【戦略シミュ】ユニット管理方法でのリスト構造について

Posted: 2009年11月10日(火) 20:43
by softya
1000個ぐらいで、数値IDで検索するなら気にするほどの時間は掛かりません。
リスト構造を数値ID順に並べておけば、バイナリサーチも使えます。その他にもハッシュテーブルで検索とか、検索だけのリストポインタを持つとか、幾らでも高速化の手はありますから今は気にしなくて良いと思いますよ。

Re:【戦略シミュ】ユニット管理方法でのリスト構造について

Posted: 2009年11月10日(火) 20:53
by たかぎ
そもそもリスト構造にする必要なんかないのでは?
素直にstd::vectorを使っておけばよいと思います。

Re:【戦略シミュ】ユニット管理方法でのリスト構造について

Posted: 2009年11月10日(火) 21:05
by yskey
>>softayさん
>>たかぎさん
ありがとうございます。
C++は最近手を出したばかりなので知りませんでした。
C++って結構便利そうですね・・・

Re:【戦略シミュ】ユニット管理方法でのリスト構造について

Posted: 2009年11月10日(火) 21:27
by yskey
ところでなんですが
DxLibを使う時、
<stdio.h>や<math.h>をインクルードする必要はなぜないんですか?
<DxLib.h>内ですべてインクルードされているのでしょうか?

vectorコンテナを使うとき<vector>はインクルードする必要はあるみたいなのですが・・・
C++系のインクルードはされてないって事ですか?

Re:【戦略シミュ】ユニット管理方法でのリスト構造について

Posted: 2009年11月10日(火) 22:11
by softya
>DxLibを使う時、<stdio.h>や<math.h>をインクルードする必要はなぜないんですか?
><DxLib.h>内ですべてインクルードされているのでしょうか?
DxLibが使っているからインクルードされているんでしょうね。
何でも無闇にインクルードするとコンパイルが遅くなりますから。

>vectorコンテナを使うとき<vector>はインクルードする必要はあるみたいなのですが・・・
>C++系のインクルードはされてないって事ですか?

DXライブラリは、C++系用のライブラリでは無いですからね。
そもそも関数で提供されていてクラスじゃないですから。

>そもそもリスト構造にする必要なんかないのでは?
>素直にstd::vectorを使っておけばよいと思います。

たかぎさんのご意見は正しと思います。
下手な検索をするよりvectorを添え字でアクセスするほうが早いって事ですよね。
ただ、何事も経験ですのでリスト構造ぐらい知っていたほうが良いんじゃないかなと私は思うわけです。
速度を気にしているみたいですので、使ってみて比べてもらえるのが一番ですが。
最終的に使う方の判断にお任せします。

Re:【戦略シミュ】ユニット管理方法でのリスト構造について

Posted: 2009年11月11日(水) 23:55
by yskey
>>softyaさん
どうもご返信ありがとうございます。
リスト構造も面白い物なのでやってみようと思います。
ありがとうございました。