问题列表 - 第2700页

存储2D点以快速检索矩形内的那些点

我有大量的2D点,我想快速得到那些位于某个矩形的点.让我们说一个'.' 是任何一点,'X'是我想要在一个矩形内找到的一个点,其中'T'为TopLeft,'B'为BottomRight点:

. . . . . .
. T-----+ .
. | X X | .
. +-----B .
. . . . . .
Run Code Online (Sandbox Code Playgroud)

我尝试了一个带有排序函数的std :: set,它将开头的TopLeft点和集合末尾的BottomRight排序.首先按X值排序时,这将导致找到以下几点.

. . . . . .
. T-----+ .
X | X X | X
. +-----B .
. . . . . .
Run Code Online (Sandbox Code Playgroud)

这意味着我必须检查每个找到的点,它是否真的在矩形内.不是很好.

什么是更好的方法来做到这一点?

我的语言是C++(Windows),我有STL以及可用的提升.

更新

到目前为止已经阅读了答案,我注意到我没有考虑我的问题的所有参数:没有一个固定的矩形.用户可以在运行时设置矩形.这意味着对这组点进行排序比在此更新之前Artelius建议的所有点的线性搜索更有效.不过我还是会尝试一下!我不希望用户非常频繁地设置矩形.所以关于实施工作,它可能对我来说是一个很好的解决方案.

c++ boost stl point spatial

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

如何修剪Subversion中的旧版本?

如何从我的开发subversion存储库中删除旧版本?我保留了一个颠覆沙箱,其中有很多测试项目,二进制文件等.我想偶尔修剪历史.

svn

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

加载ListBox的正确方法是什么?

ListBox在C#.NET 2.0 Winforms中加载一个正确的方法是什么?

我以为我可以将它绑定到一个DataTable.没有这样的运气.
我以为我可以用它绑定它Dictionary.没运气.

我是否必须编写一个名为的类KeyValuePair,然后使用List<KeyValuePair>只是为了能够用对象加载这个东西?也许我错过了一些明显的东西.我希望我的显示文本和值是不同的值.

.net c# winforms

26
推荐指数
3
解决办法
4万
查看次数

建议(半)保证Flash/PHP游戏中的高分

...我在这里已经阅读了一些讨论了各种方法的线程,并且只是在寻找对我们提出的建议解决方案的一些反馈.在其中一个帖子中发布了一条评论,推荐了一个听起来很棒的公钥/私钥,这就是我们的想法......

客户端 - 1.密钥存储在Flash swf内部,使用第三方工具加密.2.高分与高分值一起散列(EX:md5('ourSecretKey'+ 200))3.此值通过AMF发送到服务器上的PHP脚本,以及高分(200)

服务器端 - 1.服务器接收数据并哈希传递的高分(200)+密钥(存储在服务器以及Flash中的'ourSecretKey')并检查传递的哈希,如果值是匹配的,则允许输入得分高,否则失败.

我知道这不是一个万无一失的解决方案,但这是否可以接受?我的意思是,对于一个简单的在线Flash游戏,这是否足够安全?思考?

先感谢您!

php flash actionscript actionscript-3

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

F#:如何将Map与集合(如Regex Matches)一起使用?

秀... F#不再具有IEnumerable.map_with_type ......这是人的方式对集合的映射.我现在该怎么办?

let urlPat = "href\\s*=\\s*(?:(?:\\\"(?<url>[^\\\"]*)\\\")|(?<url>[^\\s]* ))";;
let urlRegex = new Regex(urlPat)
let matches = 
    urlRegex.Matches(http("http://www.google.com"))

let matchToUrl (urlMatch : Match) = urlMatch.Value
let urls = List.map matchToUrl matches
Run Code Online (Sandbox Code Playgroud)

谢谢!

f# map

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

Generic方法可以同时处理Reference和Nullable Value类型吗?

我有一系列的扩展方法来帮助对IDataRecord对象进行空值检查,我目前正在实现这样:

public static int? GetNullableInt32(this IDataRecord dr, int ordinal)
{
    int? nullInt = null;
    return dr.IsDBNull(ordinal) ? nullInt : dr.GetInt32(ordinal);
}

public static int? GetNullableInt32(this IDataRecord dr, string fieldname)
{
    int ordinal = dr.GetOrdinal(fieldname);
    return dr.GetNullableInt32(ordinal);
}
Run Code Online (Sandbox Code Playgroud)

等等,对于我需要处理的每种类型.

我想重新实现这些作为通用方法,部分是为了减少冗余,部分是为了学习如何编写通用方法.

我写过:

public static Nullable<T> GetNullable<T>(this IDataRecord dr, int ordinal)
{
    Nullable<T> nullValue = null;
    return dr.IsDBNull(ordinal) ? nullValue : (Nullable<T>) dr.GetValue(ordinal);
}
Run Code Online (Sandbox Code Playgroud)

只要T是值类型,它就可以工作,但如果T是引用类型,它就不会.

如果T是值类型,则此方法需要返回Nullable类型,否则返回default(T).我该如何实现这种行为?

.net c# generics

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

C#Process.Start,如何防止现有应用程序的重用?

我正在编写程序中的一个功能,用户可以编辑存储在数据库中的文档,它将文档保存到临时文件夹,然后使用Process.Start将文档启动到编辑应用程序中,例如,使用Microsoft Word.

然后我的应用程序需要等到他们关闭被调用的进程并用temp文件夹中新编辑的副本替换数据库中的文档.

只要被调用的应用程序尚未运行,以下代码就可以正常工作:

ProcessStartInfo pInfo = new ProcessStartInfo();
pInfo.FileName=TempFolder + Path.DirectorySeparatorChar + f.Name;
Process p = new Process();
p.StartInfo = pInfo;
p.Start();
//p is null at this point if called application was already running
//i.e. Microsoft Word is re-used instead of starting a fresh copy
p.WaitForInputIdle();
p.WaitForExit();
Run Code Online (Sandbox Code Playgroud)

有没有办法强制启动一个全新的流程,或者任何人都可以想到另一种方法来处理这个问题.我真的不希望用户能够在我的应用程序中执行任何其他操作,直到他们关闭被调用的进程,因为我需要知道他们是否在那个时间点编辑了该文件,而不是之后各种各样的其他问题可能会蔓延.

c# winforms

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

C#,For循环和速度测试......第二次完全相同的循环更快?

public Int64 ReturnDifferenceA()
{
  User[] arrayList;
  Int64 firstTicks;
  IList<User> userList;
  Int64 secondTicks;
  System.Diagnostics.Stopwatch watch;

  userList = Enumerable
              .Range(0, 1000)
              .Select(currentItem => new User()).ToList();

  arrayList = userList.ToArray();

  watch = new Stopwatch();
  watch.Start();

  for (Int32 loopCounter = 0; loopCounter < arrayList.Count(); loopCounter++)
  {
     DoThings(arrayList[loopCounter]);
  }

  watch.Stop();
  firstTicks = watch.ElapsedTicks;

  watch.Reset();
  watch.Start();
  for (Int32 loopCounter = 0; loopCounter < arrayList.Count(); loopCounter++)
  {
     DoThings(arrayList[loopCounter]);
  }
  watch.Stop();
  secondTicks = watch.ElapsedTicks;

  return firstTicks - secondTicks;
}
Run Code Online (Sandbox Code Playgroud)

如您所见,这非常简单.创建用户列表,强制使用数组,启动监视,循环列表并调用方法,停止监视.重复.通过返回第一次运行和第二次运行的差异来完成.

现在我打电话给这些:

differenceList = Enumerable
                 .Range(0, 50)
                 .Select(currentItem => ReturnDifferenceA()).ToList(); …
Run Code Online (Sandbox Code Playgroud)

c# arrays foreach loops for-loop

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

如何设置调试进程的当前目录?

我有一个对它调用的目录敏感的应用程序 - 它使用相对路径加载一些文件.

当我通过调试器启动程序时,如何控制初始当前目录?

我宁愿避免在调试程序中添加特殊代码来调用它chdir; 我的直觉是调试器应该提供一些在外部指定的方法,因为无论如何它本身就是一个外部设置.

我正在使用的调试器是TotalView,但我对其他Linux调试器的答案持开放态度,因为它可以帮助我在电视中找到类似的设置.我可以在调用程序时指定环境变量,所以在云雀上,我尝试过设置PWD,但没有运气.

linux debugging totalview

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

什么工具相当于TFS(或MS-land)中的Maven?

我的公司正在从svn(和开源产品)转向TFS(和MS产品).我们过去曾使用maven将预先构建的组件打包成可立即发布的软件包.在TFS或MS-Land中是否有像maven这样强大的工具?

我看过msbuild,但它似乎不如Maven强大.

msbuild tfs maven-2

10
推荐指数
2
解决办法
6370
查看次数