小编Gre*_*eek的帖子

引用/非可空指针的容器

当我想要NULL不可能时,我通常使用引用而不是指针.既然我们不能有引用容器,那么只包含非空指针的容器类型应该是什么?

c++ type-systems pointers reference

7
推荐指数
1
解决办法
987
查看次数

在C++中从容器中选择k个最小元素的"最佳"(惯用)方法

我经常发现自己遇到这个问题:给定一个序列,找到k-最小的元素.问题并不那么难,但我正在寻找的是一种"习惯性"的方式来做到这一点既安全又很少错误)并且沟通意图很好.所以最终做的是对序列进行排序,然后取第一个k元素:

std::sort(container.begin(),container.end());
std::vector<T> k_smallest(container.begin(),container.begin() + k);
Run Code Online (Sandbox Code Playgroud)

在我看来这既安全又易于理解,但这里的复杂性是nlogn + k,而不仅仅是n.你们是如何做到这一点的,是否有一种自觉的方式(使用一些模糊的功能)可以提供最佳的复杂性而无需重新实现轮子

c++ algorithm stl stl-algorithm

6
推荐指数
2
解决办法
1385
查看次数

何时销毁默认参数对象?

void foo(const Object & o = Object()) {
      return;
}
Run Code Online (Sandbox Code Playgroud)

在上面的函数中,什么时候〜应该被调用的对象?当功能退出时或在呼叫站点周围的块末尾?

c++ destructor

6
推荐指数
2
解决办法
193
查看次数

F#中的数组遍历

在F#中迭代数组的最快方法是什么?使用Array.[index]似乎创建(通过查看发布模式下的程序集产生)调用asm指令.有办法避免这种情况吗?谢谢

120:             me.[i] <- me.[i] ||| you.[i]
    0000005b 8B 45 F8             mov         eax,dword ptr [ebp-8] 
    0000005e 8B 55 E0             mov         edx,dword ptr [ebp-20h] 
    00000061 3B 42 04             cmp         eax,dword ptr [edx+4] 
    00000064 72 05                jb          0000006B 
    00000066 E8 35 CD B9 65       call        65B9CDA0 
    0000006b 8B 4C C2 08          mov         ecx,dword ptr [edx+eax*8+8] 
    0000006f 8B 5C C2 0C          mov         ebx,dword ptr [edx+eax*8+0Ch] 
    00000073 8B 45 F8             mov         eax,dword ptr [ebp-8] 
    00000076 8B 55 DC             mov         edx,dword ptr [ebp-24h] 
    00000079 3B …
Run Code Online (Sandbox Code Playgroud)

.net arrays performance f#

4
推荐指数
1
解决办法
342
查看次数

monad可以被视为计算(或计算过程)的具体化吗?

在我的第一个分析中,我会回答是,但我无法找到任何明确说明这一事实的参考.

monads haskell functional-programming

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