11月分の日記が,行数オーバーで一部消えてた.すんません.
November, 25. 2008
非常に小学生な人達が寮にいました.多分,寮の外の人達でしょう.
風呂場から外に出て叫び声(奇声)を上げながら,三階を駆け回っていました.
正直思ったのですが,日本の将来は大丈夫なのか?あんなのが労働者階級の一柱を支えると思うと憂鬱です.
どうか私が死ぬまで,私に関わることのないことを切に願います.
ついでに社会を支えないでほしいですねw(><)愚痴を言ってすいませんでした.
November, 17. 2008に書いた問題の解決策(?)
MemberwiseClone( )というメソッドを使う.
これは,インスタンスのコピーを作る機能を持っている.
もっと分かりやすく言えば,自分自身と同じクラスのインスタンスをnewして,
自分自身のなかに持っているデータをそっくり丸ごとnewしたインスタンスにコピーしてやる,という機能を持つメソッドです.
探したら割と簡単に発見できました.よく文章を読んでなくて飛ばしてたようです.
しかし,どうにもディープコピーとシャローコピーが毎回ごっちゃになるな~.
以上です.
なんかどんどんページ増やしてしまったが,破滅フラグっぽいなwwww間に合わなくなるかも…
それに微妙に逃避行動っぽいしな~.
November, 18. 2008
今週の金曜日は第一イテレーションチェックです.終わると思うけど,どうだろうね~.
それと,今回からイテレーションチェックに進捗具合やゲームの企画に関してプレゼンテーションをすることになってます.
資料を作成するのが結構大変だ.
November, 17. 2008
最近にあった問題です.C#に微妙な部分があった.
イテレータ(Enumrator)を二重ループさせるときに問題が発生した.
cppソース
for( Map::iterator i ( mGroup.begin () ); i != mGroup.end(); ++i )
{
// 同一グループをペアで訪問
(*i).second->AcceptPair( pair );
// ほかのグループで訪問
Map::iterator j( i );
for( ++j; j != mGroup.end(); ++j )
{
AcceptPair( *(*i).second, *(*j).second, pair );
}
}
csソース
IEnumerator< EntityManager< Entity > > first = m_group.Values.GetEnumerator();
int count = 0;
while( first.MoveNext() )
{
// 同一ペアグループをペアで訪問する
first.Current.AcceptPair( pair );
IEnumerator< EntityManager< Entity > > second = m_group.Values.GetEnumerator();
// 重複しないように要素を進める
++count;
for( int i = 0; i < count; ++i )
{
second.MoveNext();
}
while( second.MoveNext() )
{
AcceptPair( first.Current, second.Current, pair );
}
}
ちなみに,ここで問題になっているのが,C#でオブジェクトを代入するとシャローコピーされてしまうので,C++のように素直に二重ループで回せないということです.
ディープコピーしようにも,EnumratorにCloneメソッドはないし,Srializeできないし,代入できないしと不便極まりない.
私がやり方を知らないだけなのか,思いつかない愚者なのかは分からないが,どうかこの勉強不足な私に誰か教えてください.
やりたいことは,同じ処理をさせているがC#の方は分かりづらい.もっと分かりやすいコードに直したいということです.
- IEnumerator< EntityManager< Entity > >をDictionary<TKey,EntityManager< Entity >>.ValueCollection.Enumeratorにすればできた。interfaceじゃなくてstructにすればOk -- アキラ (2008-11-19 01:01:55)
November, 16. 2008
十月中に色々やるとか言っておきながらほとんどできてない.
時間はあったのだが,どうにもグダグダしてしまった.
とりあえず,気を取り直して頑張っていきます.
- やばいよ~.来年の4月から社会人なのに,色々準備できてない… -- 管理人 (2008-1
最終更新:2008年12月01日 00:06