インターネットで見つけたいくつかの 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 は構造体です。