小编pad*_*wan的帖子

检查四个点是否在同一平面上,仅使用距离(验证共线性)

有一种称为Cayley-Menger行列式的方法,以便找出3个点是共线的,4个点是共面的,只要给出所有的成对距离.

然而,在二维中,有一种非常简单的方法来确定3点,{A,B,C}是否共线:三角不等式!

!(|AB| + |AC| = |BC|) !(|AB| + |BC| = |AC|) !(|AC| + |BC| = |AB|) IFF A,B,C不共线

3-D中是否有类似的方法?

c++ algorithm math geometry linear-algebra

7
推荐指数
1
解决办法
3898
查看次数

使用自定义比较器时,使用TreeSet或ArrayList是否更好?

我已经实现了一个图表.我想根据它们的度数对给定的顶点子集进行排序.因此,我写了一个名为的自定义比较器DegreeComparator.

private class DegreeComparator implements Comparator<Integer>
{
    @Override
    public int compare(Integer arg0, Integer arg1) 
    {
        if(adj[arg1].size() == adj[arg0].size()) return arg1 - arg0;
        else return adj[arg1].size() - adj[arg0].size());
    }

}
Run Code Online (Sandbox Code Playgroud)

那么,下面哪一个更有效率?

运用 TreeSet

public Collection<Integer> sort(Collection<Integer> unsorted)
{
    Set<Integer> sorted = new TreeSet<Integer>(new DegreeComparator());
    sorted.addAll(unsorted);
    return sorted;
}
Run Code Online (Sandbox Code Playgroud)

运用 ArrayList

Collections.sort(unsorted, new DegreeComparator());
Run Code Online (Sandbox Code Playgroud)

请注意,第二种方法不是函数,而是单行代码.

直观地说,我宁愿选择第二个.但我不确定它是否更有效率.

java sorting performance arraylist set

6
推荐指数
2
解决办法
1万
查看次数

jgrapht的自定义边缘

我想定义一个自定义边

public class Connection extends DefaultWeightedEdge
Run Code Online (Sandbox Code Playgroud)

但是当我尝试使用时,super()这可能吗?创建图形时应为EdgeFactory使用什么?

new SimpleWeightedGraph<Sensor, Connection>(EdgeFactory.class);
Run Code Online (Sandbox Code Playgroud)

这样就足够了吗?还是我应该创建一个新的扩展类EdgeFactory

java jgrapht

4
推荐指数
1
解决办法
3055
查看次数

如何在名称与另一个函数相同的私有类中调用函数?

考虑以下课程:

class Foo
{
    private class Bar
    {
        int operatedNumber;
        Bar(int x, int y)
        {
            operatedNumber = operate(x,y);
        }
        int operate(int x)
        {
           return x*2; 
        }
    }
    public int operate(int x, int y)
    {
        return x+y;
    }
    public Foo()
    {
        Bar b = new Bar(3,5);
    }
}
Run Code Online (Sandbox Code Playgroud)

我收到编译时错误 The method operate() is not applicable for the arguments (int, int).

有没有办法调用第二个operate()功能?

java compiler-errors function

2
推荐指数
1
解决办法
76
查看次数

我无法使用指针更改整数的值

这是我正在运行的代码:

#include <iostream>
using namespace std;

int main()
{
    int x = 5;
    int *p;
    p = &x;
    *p++;
    cout<<x<<endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出应该是6,因为p它指的是地址x.但是,我得到5.

但更有趣的是,我不明白为什么输出是6当我改变*p++*p = *p+1.为什么是这样?

c c++ pointers

1
推荐指数
1
解决办法
120
查看次数