问题列表 - 第12522页

如何比较两个对象是否真的是同一个对象?

我想比较一个变量A是否代表与变量B相同的对象.

我可以用==运算符吗?

或者这看起来还有什么?我想我需要检查变量所指向的对象的内存地址,对吧?

iphone cocoa cocoa-touch objective-c uikit

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

仅当元素尚未存在时,将元素添加到列表的最有效方法是什么?

我在Python中有以下代码:

def point_to_index(point):
    if point not in points:
        points.append(point)
    return points.index(point)
Run Code Online (Sandbox Code Playgroud)

这段代码非常低效,特别是因为我希望points增长到拥有几百万个元素.

如果该点不在列表中,我将遍历列表3次:

  1. 寻找它,并决定它不存在
  2. 转到列表的末尾并添加一个新元素
  3. 转到列表的末尾,直到找到索引

如果在列表中,我穿越了两遍:1.寻找它,并决定它是有2去几乎到了列表的末尾,直到我找到指数

有没有更有效的方法来做到这一点?例如,我知道:

  • 我更有可能用一个不在列表中的点来调用此函数.
  • 如果该点在列表中,那么它可能比在开头时接近结尾.

所以,如果我有这条线:

if point not in points:
Run Code Online (Sandbox Code Playgroud)

从结尾到开头搜索列表,当点已经在列表中时,它将提高性能.

但是,我不想这样做:

if point not in reversed(points):
Run Code Online (Sandbox Code Playgroud)

因为我认为这reversed(points)本身会带来巨大的代价.

我也不想在列表的开头添加新的点(假设我知道如何在Python中这样做)因为这会改变索引,索引必须保持不变才能使算法工作.

我能想到的唯一改进是只使用一次传递来实现该功能,如果可能的话,从最后到开始.底线是:

  • 有没有办法做到这一点?
  • 有没有更好的方法来优化功能?

编辑:我已经得到了只用一次通过实现这个的建议.index()从最后到开始有什么办法吗?

编辑:人们已经问过为什么索引是关键的.我正在尝试使用OFF文件格式描述3D表面.此格式使用其顶点和面来描述曲面.首先列出顶点,然后使用顶点索引列表描述面.这就是为什么一旦我向列表中添加一个漩涡,它的索引就不能改变.

编辑:有一些建议(如igor)使用dict.这是扫描列表的好方法.但是,当我完成后,我需要按照创建的顺序打印出列表.如果我使用dict,我需要打印出按值排序的键.有没有一个好方法呢?

编辑:我实施了www.brool.com建议.这是最简单,最快速的.它本质上是一个有序的Dict,但没有开销.表现很棒!

python optimization list

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

我在哪里可以找到.vcproj文件结构的参考?

我看了MSDN,找不到它.
我找到了.vcproj文件XML Schema,这很好.
但我真正想要的是对vcproj文件中每个元素的解释,一个引用.

在我面前的直接问题是,VisualStudioProject/Files/Filter元素中UniqueIdentifier属性的意义是什么?源文件的UUID是否在项目中相同?还是全球独一无二的?

<VisualStudioProject>
  ...
  <Files>
      <Filter
        Name="Source Files"
        Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
        UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
        >
        <File ... />
          ... 
      </Filter>
      <Filter
        Name="Header Files"
        Filter="h;hpp;hxx;hm;inl;inc;xsd"
        UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
        >
        <File ... />
          ... 
      </Filter>
      <Filter
        Name="Resource Files"
        Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
        UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
        >
        <File ... />
          ... 
      </Filter>
  </Files>
  <Globals>
  </Globals>
</VisualStudioProject>
Run Code Online (Sandbox Code Playgroud)

但在我回答了一个问题之后,我确信我还会有10000个问题.所以我想要一个参考,允许我直接编辑.vcproj.

谁有人建议?

编辑:即使MS没有记录它,每个元素确实有意义.有谁知道列表或摘要?

c++ vcproj visual-studio

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

哪个.jar文件有javax.xml.stream.*?

我的Mac运行Java 1.5再次出现问题....我在哪里获得一个包含javax.xml.stream.XMLInputFactory的.jar文件?我想使用StAX但不知道如何正确设置它.


我似乎无法得到这个设置.我现在已经下载了jaxp-api.jar,jsr173_1.0_api.jar,sjsxp.jar,stax-api-1.0.1.jar,stax2-api-3.0.1.jar和woodstox-core-asl-4.0. 5.jar; 把它们全部放到我的java/lib/ext目录中,确保它们在我的eclipse构建路径上,删除了Mac com.apple.quarantine扩展属性,在.jar文件上做了一个"chmod a + x",然后我仍然会尝试以下错误import javax.xml.stream.XMLInputFactory;

访问限制:由于对所需库的限制而无法访问XMLInputFactory类型/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/lib/ext/jsr173_1.0_api.jar

我需要做什么?

java xml stax

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

如何找到指针引用的内存大小?

GetMem允许您分配任意大小的缓冲区.在某处,大小信息由内存管理器保留,因为当您将指针传递给FreeMem时,不需要告诉它缓冲区有多大.

该信息仅供内部使用,还是有任何方法可以检索指针指向的缓冲区大小?

delphi pointers memory-management

8
推荐指数
2
解决办法
2153
查看次数

在 Java 中使用 Runtime.exec()

在 Java 中你需要做什么才能让 Runtime.exec() 运行路径上的程序?我正在尝试运行 gpsbabel ,我已将其放入路径(/usr/local/bin)中。

public class GpxLib {

    public static void main(String[] args) {
        try
        {
            Runtime r = Runtime.getRuntime();
            Process p = r.exec("gpsbabel -i garmin -f usb: -o gpx -F -");
            InputStream is = p.getInputStream();
            BufferedReader br = new BufferedReader(new InputStreamReader(is));
            while (true)
            {
                String s = br.readLine();
                if (s == null)
                    break;
                System.out.println(s);
            }
            br.readLine();
        } catch (IOException e) {
            e.printStackTrace(System.err);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

java path exec

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

git-svn不承诺分支,只有trunk

我正在使用如下布局的SVN存储库:

$SVN/[project]/trunk
$SVN/[project]/branches/[user]/[branch]
$SVN/[project]/tags/releases/[tag]

我的.git/config看起来像这样:

[svn-remote "svn"]
  url = $SVN   
  fetch = project/trunk:refs/remotes/trunk   
  branches = project/branches/*/*:refs/remotes/*  

当我看到git branch -a时,我看到了所有的远程分支.假设我想检查一个,处理它,然后提交更改.这是我想要做的:

git checkout -b comments erik/comments
.... work, commit locally ....
git svn dcommit

但是,dcommit总是推送到$ SVN/project/trunk.git svn info始终将URL报告为$ SVN/project/trunk

我尝试过使用--track,我尝试用--hard重置.我在这里没有想法.我怀疑这是我的[svn-remote],但这只是一种预感.

svn git branch git-svn

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

会话登录与HTTP身份验证.优点缺点

我注意到一些大型网站使用HTTP身份验证.

我想知道这和基于会话的登录之间的主要区别是什么.

任何优点或缺点.

任何解释和/或建议都会有所帮助,因为我正在尝试确定哪个登录用于我的网站.

谢谢

php login

7
推荐指数
2
解决办法
4573
查看次数

Prototype vs. Not,有什么好处?

我在这里做了两个对象; 一个具有在构造函数中创建的访问器方法,另一个在原型中.为什么选择其中一个而不是另一个呢?

function spy1(name){
  this.name = name;
  var secret;
  this.setSecret = function(message){
    secret = message;
  };
  this.getSecret = function(){
   return secret;
  };
}

function spy2(name){
  this.name = name;
  this.secret;
  /* (see comment) was:
  var secret;
  */
}
spy2.prototype.setSecret = function(message){
  this.secret = message;
  /*was:
  secret = message;
  */
};
spy2.prototype.getSecret = function(){
  return this.secret;

  /*was:
  return secret;
  */
};

bond = new spy1("007");
smart = new spy2("86");

bond.setSecret("CONTROL is a joke.");
smart.setSecret("The British Secret Service is for sissies.");
Run Code Online (Sandbox Code Playgroud)

javascript prototype

8
推荐指数
2
解决办法
1799
查看次数

二叉树节点故障

这是节点定义:

struct node{
    int data;
    stuct node * left;
    struct node * right;
};
Run Code Online (Sandbox Code Playgroud)

我要做的是列出指向祖先节点的所有节点.在发布错误的解决方案并从答案中获取建议后,我的新解决方案是:

递归遍历二叉树.将当前节点添加到节点数组,然后检查当前节点的子节点是否指向任何先前的祖先节点.

默认情况是节点为NULL.如果发生这种情况,函数返回.

它应该如何工作:

将节点添加到阵列

检查左子项是否为NULL.

如果不是,则将子进程与之前的每个节点进行比较.

如果发现故障,则报告.

如果不是,则以子节点作为参数调用该函数.

重复直到完成.(二叉树的rhs也一样)

问题:

  • 数组是存储节点的最佳选择吗?
  • 这有用吗?for(i = 0; i <sizeof(arrOfNodes)/ sizeof(node); i ++)
  • 因为函数是递归的,所以数组和数组索引不能在函数内初始化(或者它们可以是?)所以它们应该是全局的吗?
  • 有两个阵列会更好吗?(一个用于LHS,一个用于RHS)

代码:

void findFault(node * root){
    if (root == NULL){
      return;
    }

    arrOfNodes[index++] == root; // array of nodes

    if (root->left != NULL){
      for (i = 0; i < sizeof(arrOfNodes) / sizeof(node); i++){
         if (ar[i] == root->left){
             printf("%d", root->left);
             return;
         }
       }
       findFault(root->left);
    } else …
Run Code Online (Sandbox Code Playgroud)

c c++ binary-tree

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