问题列表 - 第7841页

查找附近点的算法?

给定一组带有x,y坐标的几百万个点,快速找到一个位置的前1000个最近点的算法是什么?"快速"在这里意味着家用电脑上大约100毫秒.

蛮力意味着进行数百万次乘法,然后对它们进行排序.虽然一个简单的Python应用程序可以在不到一分钟的时间内完成,但对于交互式应用程序来说仍然太长.

点的边界框将是已知的,因此将空间划分为简单网格是可能的.然而,点的分布有些不均匀,所以我怀疑大多数网格方块都是空的,然后突然其中一些将包含大部分点.

编辑:不必确切,实际上可能非常不准确.如果前1000名实际上只是来自前2000名的一些随机点,那就没什么大不了的了.

编辑:点集很少改变.

gis algorithm partitioning distance linear-algebra

21
推荐指数
3
解决办法
8535
查看次数

如何减少具有相同名称但不同类型的数据成员的类上的代码重复?

设计这样的课时我遇到了麻烦

class C1 {
public:
  void foo();
}

class C2 {
public:
  void foo();
}
Run Code Online (Sandbox Code Playgroud)

C1和C2有相同的方法foo(),

class Derived1 : public Base {
public:
  void Update() {
    member.foo();
  }
private:    
  C1 member;
}

class Derived2 : public Base {
public:
  void Update() {
    member.foo(); 
  }
private:    
  C2 member;
}
Run Code Online (Sandbox Code Playgroud)

Derived类的Update()完全相同,但成员的类型不同.所以我必须为每个新的派生类复制Update工具.

这是减少此代码重复的方法吗?我只提出了一个宏的解决方案.我认为有一种更优雅的方式来解决这个模板,但我无法弄清楚..

编辑: 非常感谢,但我想我错过了一些东西..

我正在使用c ++

2.实际上,每个Derived类都有大约5个成员,它们都支持foo()方法,并且派生自相同的基类.我的情况是我已经编写了一个(非常长的)Update()方法,它可以适用于每个派生类而无需任何修改.所以我只是将这个Update()复制并粘贴到每个新类的Update()中,这会导致可怕的代码重复.我想知道是否有一种方法我不需要过多地重写Update()并且可以减少重复.

再次

c++ class-design

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

MySQL删除一些外键

我有一个表,其主键在其他几个表中使用,并有几个外键到其他表.

CREATE TABLE location (
   locationID INT NOT NULL AUTO_INCREMENT PRIMARY KEY
   ...
) ENGINE = InnoDB;

CREATE TABLE assignment (
   assignmentID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
   locationID INT NOT NULL,
   FOREIGN KEY locationIDX (locationID) REFERENCES location (locationID)
   ...
) ENGINE = InnoDB;

CREATE TABLE assignmentStuff (
   ...
   assignmentID INT NOT NULL,
   FOREIGN KEY assignmentIDX (assignmentID) REFERENCES assignment (assignmentID)
) ENGINE = InnoDB;
Run Code Online (Sandbox Code Playgroud)

问题是,当我试图删除其中一个外键列(即locationIDX)时,它会给我一个错误.

"ERROR 1025(HY000):重命名时出错"

如何在不发生此错误的情况下删除上面的分配表中的列?

mysql constraints foreign-keys mysql-error-1025

176
推荐指数
5
解决办法
32万
查看次数

使用索引向量重新排序向量

我想重新排序向量中的项目,使用另一个向量来指定顺序:

char   A[]     = { 'a', 'b', 'c' };
size_t ORDER[] = { 1, 0, 2 };

vector<char>   vA(A, A + sizeof(A) / sizeof(*A));
vector<size_t> vOrder(ORDER, ORDER + sizeof(ORDER) / sizeof(*ORDER));

reorder_naive(vA, vOrder);
// A is now { 'b', 'a', 'c' }
Run Code Online (Sandbox Code Playgroud)

以下是一个低效的实现,需要复制向量:

void reorder_naive(vector<char>& vA, const vector<size_t>& vOrder)  
{   
    assert(vA.size() == vOrder.size());  
    vector vCopy = vA; // Can we avoid this?  
    for(int i = 0; i < vOrder.size(); ++i)  
        vA[i] = vCopy[ vOrder[i] ];  
}  
Run Code Online (Sandbox Code Playgroud)

有没有更有效的方法,例如,使用swap()?

c++ stl vector

34
推荐指数
3
解决办法
2万
查看次数

SVN错误:'1'和'3'之间的预期fs格式; 找到格式'4'

这是我做的,我已经安装了svnserve作为服务,我用net start svn service命令启动它.我键入svn ls svn:// localhost来测试服务,但它返回了错误,如本文标题所述.

我在我的计算机上输入了svn --versionsvnserve --version来查找版本号,客户端和服务器版本是相同的,版本1.5.6.我猜测由于服务器和客户端的不同版本而出现错误.

当我在cmd中使用svnserve --daemon --root命令启动服务器时,仍会出现错误.

为什么会出现错误?谢谢

svn client version

20
推荐指数
2
解决办法
5万
查看次数

流zip文件MVC.NET开始流式传输

我正在尝试创建一种方法,在用户下载时不断传输zip文件(这样就不会浪费流媒体)

我添加了一个thread.sleep来模拟延迟

public override void ExecuteResult(ControllerContext context) {
    HttpResponseBase response = context.HttpContext.Response;

    response.Clear();
    response.ClearContent();
    response.ClearHeaders();
    response.Cookies.Clear();
    response.ContentType = ContentType;
    response.ContentEncoding = Encoding.Default;
    response.AddHeader("Content-Type", ContentType);
    context.HttpContext.Response.AddHeader("Content-Disposition", 
                            String.Format("attachment; filename={0}", 
                            this.DownloadName));
    int ind = 0;
    using (ZipOutputStream zipOStream = 
                new ZipOutputStream(context.HttpContext.Response.OutputStream))
    {
        foreach (var file in FilesToZip)
        {
            ZipEntry entry = new ZipEntry(FilesToZipNames[ind++]);
            zipOStream.PutNextEntry(entry);
            Thread.Sleep(1000);
            zipOStream.Write(file, 0, file.Length);
            zipOStream.Flush();
        }
        zipOStream.Finish();
    }    
    response.OutputStream.Flush();
}
Run Code Online (Sandbox Code Playgroud)

看起来拉链将不会开始流式传输,直到所有文件都是压缩文件.有没有办法连续流?也许有一个不同的图书馆?

c# asp.net-mvc

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

实现HashMap

如何从头开始在C中创建Hashmap?考虑什么参数以及如何测试hashmap有多好?就像在您说哈希映射完成之前需要运行的基准测试用例一样.

c unit-testing hashmap

42
推荐指数
3
解决办法
11万
查看次数

堆栈数组

是否有可能创建一个堆栈数组而不必在它们出来时抛出堆栈?当我做这样的事情时,Eclipse给出了一个关于无法创建Stack的泛型数组的警告:

Stack<Card>[] cards = new Stack<Card>[52];
Run Code Online (Sandbox Code Playgroud)

java eclipse arrays generics

5
推荐指数
2
解决办法
9478
查看次数

Java异常与C++异常

存储例外的地方?堆栈,堆.如何为例外分配和取消分配内存?现在,如果您有多个需要处理的异常,是否创建了所有这些异常的对象?

c++ java exception

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

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