小编Ana*_*lii的帖子

为什么我不能将const左值引用绑定到返回T &&的函数?

我将函数的某些返回值绑定到const左值引用,但是在const lvalue引用的生命周期结束之前删除了该对象.

在以下示例中,Foo对象在foo结束的生命周期之前被销毁:

#include <iostream>
#include <string>

struct Foo
{
    ~Foo()
    {
        std::cout << "Foo destroyed: " << name << std::endl;
    }
    std::string name;
};

Foo&& pass_through(Foo&& foo)
{
    return std::move(foo);
}

int main()
{
    const Foo& foo = pass_through({"some string"});
    std::cout << "before scope end" << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

输出是:

Foo被破坏:
范围结束前的一些字符串

住在coliru:1

我以为你可以绑定const T&任何东西.返回是不好的做法T&&,应该按价值返回?

我在这里的cpprestsdk偶然发现了这个:

inline utility::string_t&& to_string_t(std::string &&s) { return std::move(s); }
Run Code Online (Sandbox Code Playgroud)

https://github.com/Microsoft/cpprestsdk/blob/master/Release/include/cpprest/asyncrt_utils.h#L109

非常混乱,因为Windows版本to_string_t(由预处理器宏调度)返回值:

_ASYNCRTIMP utility::string_t __cdecl …
Run Code Online (Sandbox Code Playgroud)

c++ move-semantics c++11

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

删除 BK 树中的节点

我已经在许多 不同的 语言中看到了 BK 树的许多不同实现,实际上它们似乎都没有包含从树中删除节点的方法。

即使最初介绍 BK 树的原始文章也没有提供关于节点删除的有意义的见解,因为作者只是建议标记要删除的节点,以便将其忽略:

删除结构1[BK树]和2中的键遵循与上述类似的过程,特别考虑要删除的键是代表x°[根键]的情况。在这种情况下,不能简单地删除密钥,因为它对于结构信息是必不可少的。相反,每个键必须使用一个额外的位来表示该键是否实际上对应于一条记录。相应地修改搜索算法以忽略与记录不对应的键。这涉及测试更新过程中的额外位。

虽然理论上可以正确删除 BK 树中的节点,但是否可以在线性/亚线性时间内这样做?

algorithm tree abstract-data-type time-complexity bk-tree

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

SHA-2 的空间和时间复杂度

我想知道 SHA-2 的空间和时间复杂度是多少。我试着环顾四周,并没有真正得到一个直接的答案。谁能帮我吗?非常感谢!

algorithm hash time-complexity sha2 space-complexity

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

python中OrderedSet()的时间复杂度

我正在Stack Overflow 上浏览这个答案。我来了解存在OrderedSetPython的。我想知道它是如何在内部实现的。它类似于集合的哈希表实现吗?

另外,插入、删除、查找等一些常见操作的时间复杂度是多少?

python time-complexity ordered-set

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

比较或替换操作的时间复杂度是多少?

在估计某个算法的时间复杂度时,我们用伪代码来说:

for (int i=0; i<n; i++) ---> O(n)
  //comparison? ---> ?
  //substitution ---> ?
 for (int i=0; i<n; i++) ---> O(n)
  //some function which is not recursive
Run Code Online (Sandbox Code Playgroud)

在这种情况下,这些指令的时间复杂度是O(n)因为我们迭代输入n,但是比较和替换操作是否是恒定时间,因为它们不依赖于n

谢谢

algorithm time-complexity

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

如何使用ARKit识别用户是否单击了屏幕上显示的对象-Swift

我是一个新的iOS编程。我要构建一个允许用户单击屏幕上显示的特定对象的应用程序。我正在使用addGestureRecognizer已显示的对象,以识别是否已单击用户,然后我只想在屏幕上添加另一个对象。

这是我到目前为止所做的

objpizza = make2dNode(image:#imageLiteral(resourceName: "pizza"),width: 0.07,height: 0.07)
    objpizza.position = SCNVector3(0,0,-0.2)
    objpizza.name = "none"

    self.arView.addGestureRecognizer(UIGestureRecognizer(target: self, action: #selector(selectObject)))
    arView.scene.rootNode.addChildNode(objpizza)
Run Code Online (Sandbox Code Playgroud)

这是make2dNode功能只是调整对象

func make2dNode(image: UIImage, width: CGFloat = 0.1, height: CGFloat = 0.1) -> SCNNode {
    let plane = SCNPlane(width: width, height: height)
    plane.firstMaterial!.diffuse.contents = image
    let node = SCNNode(geometry: plane)
    node.constraints = [SCNBillboardConstraint()]
    return node
}
Run Code Online (Sandbox Code Playgroud)

这是我在实现时从未调用的函数 self.arView.addGestureRecognizer(UIGestureRecognizer(target: self, action: #selector(selectObject)))

@objc func selectObject() {

    print("Image has been selected")
}
Run Code Online (Sandbox Code Playgroud)

uigesturerecognizer swift iosdeployment arkit

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

计算numpy列表中项目的确切共同出现次数

我试图找出最快的方法来计算两个值在numpy列表中一个接一个地定位的时间.

例如:

list = [1, 5, 4, 1, 2, 4, 6, 7, 2, 1, 3, 3, 1, 2] 我想计算值1跟随值的次数2(但反之亦然)

在上面的例子中,答案应该是1因为1如下2只有一次.

我显然可以通过一个简单的for循环来达到答案,每次项目i相等1且item i-1等于时2,它会添加到计数器中,但我觉得必须有更快的方法来做到这一点,

谢谢

python numpy

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

i ^ k的循环复杂度

考虑以下循环(k-正整数):

// i^k as in i raised to the power of k
for (int i = 2; i <= n; i = i^k) {
    // some O(1) expressions or statements
}
Run Code Online (Sandbox Code Playgroud)

为什么要运行log_k(log(n))几次?

algorithm big-o time-complexity

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

在Python3中初始化堆后是否需要进行heapify

当创建堆来动态跟踪最小值时,在初始化空堆后,我实际上需要调用吗heapq.heapify(heap)?或者更确切地说hq.heappop(),它将hp.heappush()自动完成这项工作..感谢您的帮助!

import heapq as hp
heap = []
hp.heapify(heap) # is this line redundant?
for val in range(1, 100):
    hp.heappush(heap, val)
    print(heap[0])
Run Code Online (Sandbox Code Playgroud)

heap min-heap python-3.x

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

找到最短的子字符串,其替换使字符串包含相等数量的每个字符

我有长度的字符串n的字母组成AGCT。如果字符串包含相等数量的、和(每次)A,则该字符串是稳定的。我需要找到替换后使其稳定的子串的最小长度。这是问题完整描述的链接GCTn/4

假设s1=AAGAAGAA

现在因为n=8理想情况下它应该有 2A秒、2T秒、2G秒和 2C秒。它有 4 个多余的As。因此我们需要一个至少包含 4 个As的子串。

我首先从左边取一个 4 个字符的子字符串,如果没有找到,那么我增加一个变量mnum(即寻找 5 个变量子字符串等等)。

我们得到AAGAA了答案。但它太慢了。

 from collections import Counter
 import sys
 n=int(input())       #length of string
 s1=input()
 s=Counter(s1)
 le=int(n/4)          #ideal length of each element
 comp={'A':le,'G':le,'C':le,'T':le}    #dictionary containing equal number of all elements …
Run Code Online (Sandbox Code Playgroud)

python string algorithm optimization python-3.x

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

记住旧数据

记住你的第一次(在Haskell循环中)

我试图通过一些Hackerrank问题来教自己一点Haskell.

我正在研究的问题涉及读取坐标集(x1,y1)和(x2,y2)以及确定由这些坐标绘制的多边形的周长.

到目前为止,这是我的代码:

-- Calculate length of line given points x1,y2, x2,y2
calc_length:: Int -> Int -> Int -> Int -> Float 
calc_length x1 y1 x2 y2 =
       sqrt ( fromIntegral (height ^2 + width ^2)  )
       where height = abs( y2 - y1) 
             width  = abs( x2 - x1) 


main = do
        x <- readLn :: IO Double
        forM_ [1,2..(x / 2)] $ \lc -> do
           line1 <- getLine
           let wds1 = map (\str -> read str::Int) (words …
Run Code Online (Sandbox Code Playgroud)

state haskell loops

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

如何在 Ktor (Kotlin) 管道的各个部分之间传递数据

我正在构建一个 API 并用于intercept(ApplicationCallPipeline.Call){}在每次路由执行之前运行一些逻辑。我需要将数据从拦截()方法传递到被调用的路由,并通过call.attributes.put()在拦截()中使用来设置数据,如下所示:

val userKey= AttributeKey<User>("userK") call.attributes.put(userKey, userData)

并使用 检索userDatacall.attributes[userKey]。发生的情况是,这只call.attributes[userKey]适用于我设置属性的拦截()方法。它在我需要的路线上不起作用。它让我 java.lang.IllegalStateException: No instance for key AttributeKey: userK

我想知道我是否以正确的方式做事

kotlin ktor

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