我有大量的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建议的所有点的线性搜索更有效.不过我还是会尝试一下!我不希望用户非常频繁地设置矩形.所以关于实施工作,它可能对我来说是一个很好的解决方案.
如何从我的开发subversion存储库中删除旧版本?我保留了一个颠覆沙箱,其中有很多测试项目,二进制文件等.我想偶尔修剪历史.
ListBox在C#.NET 2.0 Winforms中加载一个正确的方法是什么?
我以为我可以将它绑定到一个DataTable.没有这样的运气.
我以为我可以用它绑定它Dictionary.没运气.
我是否必须编写一个名为的类KeyValuePair,然后使用List<KeyValuePair>只是为了能够用对象加载这个东西?也许我错过了一些明显的东西.我希望我的显示文本和值是不同的值.
...我在这里已经阅读了一些讨论了各种方法的线程,并且只是在寻找对我们提出的建议解决方案的一些反馈.在其中一个帖子中发布了一条评论,推荐了一个听起来很棒的公钥/私钥,这就是我们的想法......
客户端 - 1.密钥存储在Flash swf内部,使用第三方工具加密.2.高分与高分值一起散列(EX:md5('ourSecretKey'+ 200))3.此值通过AMF发送到服务器上的PHP脚本,以及高分(200)
服务器端 - 1.服务器接收数据并哈希传递的高分(200)+密钥(存储在服务器以及Flash中的'ourSecretKey')并检查传递的哈希,如果值是匹配的,则允许输入得分高,否则失败.
我知道这不是一个万无一失的解决方案,但这是否可以接受?我的意思是,对于一个简单的在线Flash游戏,这是否足够安全?思考?
先感谢您!
秀... 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)
谢谢!
我有一系列的扩展方法来帮助对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).我该如何实现这种行为?
我正在编写程序中的一个功能,用户可以编辑存储在数据库中的文档,它将文档保存到临时文件夹,然后使用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)
有没有办法强制启动一个全新的流程,或者任何人都可以想到另一种方法来处理这个问题.我真的不希望用户能够在我的应用程序中执行任何其他操作,直到他们关闭被调用的进程,因为我需要知道他们是否在那个时间点编辑了该文件,而不是之后各种各样的其他问题可能会蔓延.
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) 我有一个对它调用的目录敏感的应用程序 - 它使用相对路径加载一些文件.
当我通过调试器启动程序时,如何控制初始当前目录?
我宁愿避免在调试程序中添加特殊代码来调用它chdir; 我的直觉是调试器应该提供一些在外部指定的方法,因为无论如何它本身就是一个外部设置.
我正在使用的调试器是TotalView,但我对其他Linux调试器的答案持开放态度,因为它可以帮助我在电视中找到类似的设置.我可以在调用程序时指定环境变量,所以在云雀上,我尝试过设置PWD,但没有运气.
我的公司正在从svn(和开源产品)转向TFS(和MS产品).我们过去曾使用maven将预先构建的组件打包成可立即发布的软件包.在TFS或MS-Land中是否有像maven这样强大的工具?
我看过msbuild,但它似乎不如Maven强大.