我试图用 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是一个struct。