标签: traversal

哈希集的浅拷贝

这是最好的方式吗?

var set2 = new HashSet<reference_type>();
Run Code Online (Sandbox Code Playgroud)

用这样的foreach遍历集合.

foreach (var n in set)
    set2.Add(n);
Run Code Online (Sandbox Code Playgroud)

或者像这样使用像union这样的东西.

set2 = set.UnionWith(set); // all the elements
Run Code Online (Sandbox Code Playgroud)

c# collections union traversal shallow-copy

24
推荐指数
3
解决办法
1万
查看次数

jQuery:找到下一个表格行

我有一个表,包含行,包含细胞 - 其中一些包含img,如下所示:

<img id="FormView1_btnSave_row1%1%new" style="border-width: 0px; cursor: pointer;"
src="grafik/ok_16x16.gif" onclick="cleverStuff(this)"/>
Run Code Online (Sandbox Code Playgroud)

在函数cleverStuff中我想在单击按钮的行之后的行上操作 - 这个特殊按钮仅包含在最后一行可见行中,下面有一堆隐藏行我想做第一行隐藏线可见 - 但我没能到达下一行.我的理解是,所有组合parent()next()可以用来从img到td,到tr,最后到下一个tr.所以我试着验证这个:

$(ctrl).attr('id') 正确返回img的id :)

$(ctrl).parent().attr('id') 返回NULL.

我在这里错过了什么?

javascript traversal

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

是否存在看似容器的非平凡可折叠或可遍历实例?

有许多仿函数看起来像容器(列表,序列,映射等),还有许多仿函数没有(状态转换器IO,解析器等).我还没有看到任何看起来像容器的非平凡FoldableTraversable实例(至少如果你斜视一下).有存在吗?如果没有,我很想更好地了解他们为什么不能这样做.

haskell traversal fold

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

如何在Java中按下/键入TAB键?

    private void jTextField1KeyPressed(java.awt.event.KeyEvent evt)
    {
        //cant capture my TAB?
        System.out.print(evt.getKeyChar());

    }
Run Code Online (Sandbox Code Playgroud)

在没有使用焦点监听技术的情况下,java gui捕获tab键的最简单方法是什么?

java focus traversal keyevent keylistener

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

Prolog - 查找列表中的相邻元素

我正在尝试定义一个谓词adjacent(X, Y, Zs),如果X和Y在列表中相邻,则该谓词为真.我的代码目前是这样的:

adjacent(_, _, []).
adjacent(X, Y, [X, Y|Tail]) :-
  adjacent(X,Y, Tail).
Run Code Online (Sandbox Code Playgroud)

它适用于基本情况adjacent(c, d, [a, b, c, d, e]),但由于基本情况,每个其他情况也返回true,我坚持这一点.

另一个问题是,如果X不等于列表头部的第一部分,那么它会跳过X和Y并转到下一个'X'; 例如,如果c不等于a,则它跳过ab两者并检查c是否等于c.例如,当列表是这时,这是有问题的

[a, c, d, e]
Run Code Online (Sandbox Code Playgroud)

因为它最终永远不会检查c(我相信).

我很遗憾如何协调这两个问题,并将我对逻辑的理解转化为代码需要发生的事情.

编辑:感谢Christian Hujer的回答,我的基本情况错误已得到纠正,所以现在我只是坚持第二个问题.

recursion traversal list prolog

22
推荐指数
4
解决办法
3080
查看次数

为什么Java的String.equals()方法使用两个计数变量?

我只是在查看Java String类的实现,以下内容让我觉得奇怪:

public boolean equals(Object anObject) {
    if (this == anObject) {
        return true;
    }
    if (anObject instanceof String) {
        String anotherString = (String)anObject;
        int n = value.length;
        if (n == anotherString.value.length) {
            char v1[] = value;
            char v2[] = anotherString.value;
            int i = 0;
            while (n-- != 0) {               // Here n is being decremented...
                if (v1[i] != v2[i])
                    return false;
                i++;                         // while i is being incremented
            }
            return true;
        }
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)

这可以通过一个计数变量轻松实现,而n …

java string traversal

22
推荐指数
2
解决办法
658
查看次数

找到不是立即的下一个元素?

我想在类计数器之后找到第一个span元素,代码如下:

<div class="counter"></div>
<p></p>
<span></span>
Run Code Online (Sandbox Code Playgroud)

似乎next()函数只找到了下一个元素,所以像这样:

$(".counter").next("span")
Run Code Online (Sandbox Code Playgroud)

不行.我一直在使用的方式有点冗长,我想知道是否有更短的方式,它是这样的:

$(".counter").nextAll("span").eq(0)
Run Code Online (Sandbox Code Playgroud)

我认为closest()jQuery 3中的方法可以解决这个问题,但我使用的是1.2.6 - 是否有更好的方法(我只是使用了next()错误?)

jquery traversal

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

将修改后的预订树遍历模型(嵌套集)转换为<ul>

我试图将我的数据分层设置为树遍历模型到<ul>,以便在我的网站上显示.

这是我的代码:

function getCats($) {
  // retrieve all children of $parent
  $query = "SELECT max(rght) as max from t_categories";
  $row = C_DB::fetchSingleRow($query);
  $max = $row["max"];
  $result ="<ul>";
  $query = "SELECT * from t_categories where lft >=0 and rght <= $max";
  if($rs = C_DB::fetchRecordset($query)){
    $p_right ="";
    $p_left ="";
    $p_diff="";          
    while($row = C_DB::fetchRow($rs)){
      $diff = $row["rght"] -$row["lft"];

      if($diff == $p_diff){
        $result.= "<li>".$row['title']."</li>";
      }elseif (($row["rght"] - $row["lft"] > 1) && ($row["rght"] > $p_right)){
        $result. "<ul>";
        $result.= "<li>".$row['title']."</li>";

      }else{
        $result.= "<li>".$row['title']."</li>";
      } 

      $p_right = …
Run Code Online (Sandbox Code Playgroud)

html php traversal nested-sets

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

UDP打孔实现

我正在尝试完成UDP打孔.我的理论基于这篇文章WIKI页面,但我面临着C#编码的一些问题.这是我的问题:

使用此处发布的代码,我现在能够连接到远程计算机并在同一端口上侦听传入连接(将2个UDP客户端绑定到同一端口).

由于某种原因,对同一端口的两个绑定相互阻止接收任何数据.我有一个响应我的连接的UDP服务器,所以如果我在将任何其他客户端绑定到端口之前先连接到它,我会得到它的响应.

如果我将另一个客户端绑定到该端口,则不会在任一客户端上接收数据.

以下是显示我的问题的2个代码片段.第一个连接到远程服务器以在NAT设备上创建规则,然后在另一个线程上启动侦听器以捕获传入的数据包.然后代码将数据包发送到本地IP,以便侦听器获取它.第二个只发送数据包到本地IP,以确保这是有效的.我知道这不是真正的打孔,因为我在不使用NAT设备的情况下将数据包发送给自己.我现在面临一个问题,如果我在NAT设备旁边使用计算机进行连接,我认为这不会有任何不同.

[编辑] 2/4/2012我尝试在我的网络上使用另一台计算机和WireShark(数据包嗅探器)来测试监听器.我看到从其他计算机传入的数据包但是没有被侦听器UDP客户端(udpServer)或发送方UDP客户端(客户端)接收.

[编辑] 2/5/2010我现在添加了一个函数调用,在初始发送和接收数据包之后关闭第一个UDP客户端,只有第二个UDP客户端才能侦听端口.这有效,我可以从该端口上的网络内部接收数据包.我现在将尝试从网络外部发送和接收数据包.我一发现就会发布我的发现.

使用此代码,我在侦听客户端上获取数据:

static void Main(string[] args)
{
    IPEndPoint localpt = new IPEndPoint(Dns.Resolve(Dns.GetHostName()).AddressList[0], 4545);

    ThreadPool.QueueUserWorkItem(delegate
    {
        UdpClient udpServer = new UdpClient();
        udpServer.ExclusiveAddressUse = false;
        udpServer.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
        udpServer.Client.Bind(localpt);

        IPEndPoint inEndPoint = new IPEndPoint(IPAddress.Any, 0);
        Console.WriteLine("Listening on " + localpt + ".");
        byte[] buffer = udpServer.Receive(ref inEndPoint); //this line will block forever
        Console.WriteLine("Receive from " + inEndPoint + " " + Encoding.ASCII.GetString(buffer) + ".");
    });

    Thread.Sleep(1000);

    UdpClient udpServer2 …
Run Code Online (Sandbox Code Playgroud)

c# udp traversal nat hole-punching

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

Ray - Octree交叉算法

我正在寻找一种良好的光线八叉树交叉算法,它以迭代的方式为我提供了光线穿过的叶子.我打算在CPU上实现它,因为我还不想潜入CUDA :)

目前,我的Voxel raycaster只在XxYxZ体素的非分层阵列上执行3D DDA(Amanatides/Woo版本).你可以想象,当有很多空的空间时,这是非常昂贵的,如下图所示(更亮的红色=更多的工作:) :):

愚蠢3D DDA的工作量 - 红色=更多工作

我已经发现这个任务有两种算法:自下而上,从叶子向上运行,自上而下,这是基本的深度优先搜索.

我已经从2000年发现了Revelles的算法,称为八元遍历的高效参数算法,看起来很有趣,但是很老了.这是一种自上而下的算法.

最流行的自下而上的方法似乎是K. Sung,用于光线跟踪的DDA八叉树遍历算法,Eurographics'91,North Holland-Elsevier,ISBN 0444 89096 3,p.73-85.问题是大多数DDA八叉树遍历算法都期望八叉树具有相同的深度,这是我不想要的 - 空子树应该只是一个空指针或类似的东西.

在最近关于Sparse Voxel Octrees的文献中,我已经设法通读了(最值得注意的是Laine在SVO上的工作,它们似乎都基于某种GPU实现的DDA版本(Amanatides/Woo风格).

现在,这是我的问题:有没有人有任何实现基本的,没有多余的Ray-octree交叉算法的经验?你会推荐什么?

algorithm graphics traversal voxel octree

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