2

インターネットで見つけたいくつかの C++ コードを六角球プロジェクト用に C# で書き直そうとしていましたが、次のコードに出くわしました。

if((((*ti)->m_hexA) != tileNdx) && (find(nbrs. begin(), nbrs.end(), ((*ti)->m_hexA)) == nbrs.end()))
{
    nbrs.push_back(((*ti)->m_hexA));
}

私はそれをほとんどC#に変換しました。Find<T>(List<T> list, T value)std::find と同じ基本機能を実現する独自のメソッドも作成しました。

ただし、ドキュメントについてはまだわかりstd::vector<T>::end()ません。ドキュメントは、イテレータの最後にある「プレースホルダー」スロットを指すイテレータを返し、それにアクセスしようとすると「未定義の動作」が発生すると述べています。これを行います:

1.) 私の C# では、end()要素との比較を実行する通常のオブジェクトを扱う場合、オブジェクトをnull?

2.) 整数やその他のプリミティブでは、-1 などのセンチネル値と比較する必要がありますか?

上記の c++ ソース コードでは、nbrs は std::vector、m_hexA は int、ti は構造体です。

4

1 に答える 1