小编Max*_* Z.的帖子

最快的阵列寻址

我在存储有关图像信息的数组上运行图像分析代码.不幸的是,代码非常繁重,平均需要25秒来运行单帧.我看到的主要问题是数组寻址.哪个是运行2d阵列最快的,并且完全没有任何差异

水平然后垂直

for (int y = 0; y < array.Length; ++y)
    for (int x = 0; x < array[].Length; ++x)
        //Code using array[y][x]
Run Code Online (Sandbox Code Playgroud)

和垂直然后horrizontal?

for (int x = 0; x < array[].Length; ++x)
    for (int y = 0; y < array.Length; ++y)
        //Code using array[y][x]
Run Code Online (Sandbox Code Playgroud)

此外,我试图避免直接寻址和使用指针.

for (int y = 0; y < array.Length; ++y)
    int* ptrArray = (int*)array[0];
    for (int x = 0; x < array[].Length; ++x, ++ptrArray)
        //Code using ptrArray for array[y][x]
Run Code Online (Sandbox Code Playgroud)

要么

for (int x = 0; …
Run Code Online (Sandbox Code Playgroud)

c# arrays performance pointers multidimensional-array

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

使用带有Obj-C的帖子发送放大器(&)

我发送的帖子包含文字,数字和数据.数字和数据工作正常,但我遇到文本问题,因为它可能包含&符号(&).例如

page.php?text=Hello World & Space.
Run Code Online (Sandbox Code Playgroud)

现在我发现服务器收到了"&",但读起来好像是一个新的变量.所以它看到(我认为):

text = "Hello World "
Space. =
Run Code Online (Sandbox Code Playgroud)

我确实读过,我可以尝试对文本进行编码,使其看起来像是一个URL(例如""[space]变成"%20")但是没有办法正确编码.我得出结论:

textToPOST = [text stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding];
Run Code Online (Sandbox Code Playgroud)

但这不会编码&符号,而是其他所有内容.结果是:

some text &uuml; blablabla
Run Code Online (Sandbox Code Playgroud)

变成

some%20text%20&uuml;%20blablabla
Run Code Online (Sandbox Code Playgroud)

与&未编码.那我怎么能这样做,请帮忙.

非常感谢

xml post encoding objective-c

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

PHP中的对象运算符( - >)

可能重复:
参考 - 这个符号在PHP中意味着什么?

很抱歉这对此很迂腐,但我对对象操作符( - >)感到困惑.究竟是做什么以及如何(避免错误和误用)我使用它?

php

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

如何在SPARQL中查找引用另一个对象的对象

首先,我必须道歉,因为我在XML,RDF和SPARQL查询方面非常新.我所有的知识是基于大量的阅读3天,因此还没有完全沉入,然而,试图查询使用耶拿是一个大的RDF文件时,我遇到了一个问题,如何让这是一个超的部分所有实例

对不起,如果这个措辞不好,那么这里有一个例子.在我的RDF文件中,总有一个主节点:

主节点

然后有一些对象将此节点作为资源,如:

<cim:Connection rdf:ID="connection_1">
    <cim:Object.name>Connection Point 1</cim:Object.name>
    <cim:Connection.node rdf:resource="#main_node_1"/>
</cim:Connection>
Run Code Online (Sandbox Code Playgroud)

要么

<cim:Potential rdf:ID="potential_1">
    <cim:Object.name>Equal Potential 1</cim:Object.name>
    <cim:Potential.node rdf:resource="#main_node_1"/>
</cim:Connection>
Run Code Online (Sandbox Code Playgroud)

现在我知道如何查询任何rdf:type和(有点)如何使用SPARQL进行图形查询.我想要做的是找到MainNode(我已经可以),然后找到引用此MainNode的所有元素/ objetcs/classes/instances.

根据我目前的尝试,我可以查询ConnectionPotential直接查询,但不能同时查询.所以返回所有Connections 的查询将是:

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX cim: <http://iec.ch/TC57/2010/CIM-schema-cim15#>
SELECT ?object
WHERE {
    ?object   cim:Connection.node ?mainNode . 
    ?mainNode cim:Object.name     "The Main Node" . 
}
Run Code Online (Sandbox Code Playgroud)

对于所有人来说Potential,查询将是:

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX cim: <http://iec.ch/TC57/2010/CIM-schema-cim15#>
SELECT ?object
WHERE {
    ?object   cim:potential.node  ?mainNode . 
    ?mainNode cim:Object.name     "The Main Node" . 
} …
Run Code Online (Sandbox Code Playgroud)

rdf sparql authorize.net-cim

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

在C++中提前定义类

可能重复:
具有前向声明错误的循环依赖项

我有两个文件,一个定义结构(这里是:ports),另一个定义一个类(这里是:device).由于类使用这些结构作为端口,因此它们需要链接到类,最好是通过指针.但是,如果尚未定义设备类,如何创建此指针?

这大致是我希望代码看起来像......

backbone.h:

typedef struct aPort {
    std::string portName;
    Device *ptrDeviceThatOwnsPort;
} port;
Run Code Online (Sandbox Code Playgroud)

device.h中:

#include "backbone.h"

class Device {
}
Run Code Online (Sandbox Code Playgroud)

...但这显然会在backbone.h中抛出一个错误,说没有定义Device.我尝试简单地将设备头部包含在主干头文件中,位于typedef前面,但这不起作用,因为每个头部都依赖于另一个头部.在某个地方我已经读过,在Objectve-C中有一些东西沿着"前面的类定义"左右(没有在Obj-C中编码很长一段时间),所以在C++中有类似的东西吗?或者是否有更好的解决方案来解决我的问题?

非常欢迎任何帮助,并提前感谢.

c++ pointers class

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

为什么Windows无法读取超过0x1A(EOF)字符,而Unix可以读取?

可能重复:
为什么在读取eof时设置了故障位?有出路吗?

我正在编写一个小程序,它在Mac OS和Ubuntu(Unix ...)上运行良好。该程序必须读取数据文件并将字节(chars / unsigned chars)分开,然后将memcpy()它们分成浮点数。这将包括以下过程:读取以下四个值,将其读取并向左移至32位int,然后将ints内存复制到中float。像这样:

0x43 0x66 0x1A 0x79->将int32和memcpy()读入float-> val = 230.103

就像我说的那样,这在Unix上可以正常使用,但是Windows似乎将解释char 0x1A为文件结尾(EOF)错误,并停止读取数据。为什么Windows会这样做而不是Unix?我该如何关闭呢?

我什至尝试通过查看错误ifstream本身来检查错误,并检查是否已设置EOL标志。然后,我将clear()使用ifstream的错误标志并继续读取(使用get()),但是该死的东西总是返回相同的EOF / 0x1A字符,并且不会读取下一个字符。

编辑:添加了一些代码


ifstream input (PATH, ios::in);
if (input.is_open()) {
  unsigned int counter = 0;
  while (input.good()) {
    BYTE byte;
    byte = input.get();
    printf("%i, ", byte);
    counter++;
  }
  printf("\r%i, ", counter);
  input.close();
} else {
  printf("Can't open file!");
} …
Run Code Online (Sandbox Code Playgroud)

c++ memory error-handling fstream eof

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