在程序运行期间使用指针作为哈希表键是否有任何问题?(无需存储到磁盘并在以后使用它,因为这会导致明显的问题)
在许多情况下,我需要快速了解对象是否属于某个对象管理器.检查它的一种快速方法是将对象管理器中的每个对象存储在哈希表中,其中对象的指针是实际对象的键:例如,HashTable
如何检测直线(方向d和-d从点p)和线段(在点p1和p2之间)是否在2D中相交?如果他们这样做,我怎么能得到他们的交叉点.
有很多例子可以检测两个线段是否相交,但这应该更简单.
我找到了这个,但我不明白什么是副操作员:http: //www.loria.fr/~lazard//ARC-Visi3D/Pant-project/files/Line_Segment_Line.html
我需要一个带有O(1)indexOf操作的有序数据结构.我将对象指针存储在数据结构中.有任何想法吗?某种LinkedHashMap?
看看"indexOf"是什么意思: List.indexOf(Object)
如果我删除了一个导致其析构函数被调用的对象,那么在析构函数完成函数中的任何操作之前或之后是否释放了内存?
我现在可以在全球范围内做到这一点,一切正常:
const char* Foo::bars[3] = {"a", "b", "c"};
Run Code Online (Sandbox Code Playgroud)
但我想这样做是因为这更加清晰和自我记录(特别是如果你使用Enums作为索引):
const char* Foo::bars[3];
bars[0] = "a";
bars[1] = "b";
bars[2] = "c";
Run Code Online (Sandbox Code Playgroud)
无论如何可能吗?
我知道我可以在函数内部执行此操作(例如,类的构造函数)但是如果在程序的开头没有调用构造函数并且我想使用静态数组呢?这导致了问题.
我经常使用单例,因为我讨厌将主类的对象传递给成员类,以便允许它们访问主类.
Class Foo
{
A* a;
B* b;
C* c;
};
Run Code Online (Sandbox Code Playgroud)
例如,在上面的例子中,如果A,B和C想要访问Foo-我将不得不传递Foo的每一个对象,并将其存储为其成员变量(或在每个函数调用中给出对象).这有效,但感觉不对,需要更多的代码编写.
相反,我可以让Foo成为单身人士(当然只有当只有1个实例时)然后从A,B和C调用Foo :: getInstance() - > ....而且我不需要传递任何对象.我发现这非常方便.
现在,问题是我的情况可能有多个Foo实例.显然我不能使用单身模式.但我不想传递变量,也不想将它们存储在成员类中.代码太多了!:)
举个例子,我讨厌这个:
A::A(Foo* foo) : m_foo(foo)
{
}
Run Code Online (Sandbox Code Playgroud)
还有这个:
void A::someFunc(Foo* foo, int someParam)
{
}
Run Code Online (Sandbox Code Playgroud)
但是,我喜欢这个:
A::A()
{
}
void A::someFunc(int someParam)
{
Foo* foo = Foo::getInstance();
}
Run Code Online (Sandbox Code Playgroud)
还有其他办法吗?类似于单身人士模式的东西?