小编tem*_*def的帖子

C++ - [=]做什么?

我想知道是什么[=]?这是一个简短的例子

template <typename T>
std::function<T (T)> makeConverter(T factor, T offset) {
    return [=] (T input) -> T { return (offset + input) * factor; };
}

auto milesToKm = makeConverter(1.60936, 0.0);
Run Code Online (Sandbox Code Playgroud)

如何使用代码[]而不是[=]

std::function<T (T)>
Run Code Online (Sandbox Code Playgroud)

意味着一个函数原型,它(T)作为参数和返回类型T

c++ lambda c++11

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

在这种特定情况下,使用成员初始化列表和在构造函数中分配值之间是否存在差异?

在内部和关于生成的代码,是否有真正的区别:

MyClass::MyClass(): _capacity(15), _data(NULL), _len(0)
{
}
Run Code Online (Sandbox Code Playgroud)

MyClass::MyClass()
{
  _capacity=15;
  _data=NULL;
  _len=0
}
Run Code Online (Sandbox Code Playgroud)

谢谢...

c++ initialization initialization-list

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

基于数字基础系统的算法?

我最近注意到,基于创意基础中数字的巧妙使用,部分或全部有很多算法.例如:

  • 二项式堆基于二进制数,并且更复杂的偏斜二项式堆基于偏斜二进制数.
  • 用于生成按字典顺序排列的排列的一些算法基于事实数字系统.
  • 可以将尝试视为一次查看字符串的一位数的树,以获得适当的基础.
  • 霍夫曼编码树被设计成使树中的每个边在一些二进制表示中编码为零或一.
  • Fibonacci编码用于Fibonacci搜索并反转某些类型的对数.

我的问题是:还有哪些其他算法使用聪明的数字系统作为他们直觉或证据的关键步骤?.我正在考虑就这个问题进行一次讨论,所以我必须从中得到更多的例子.

algorithm math numbers number-systems data-structures

87
推荐指数
9
解决办法
6605
查看次数

将struct初始化/重置为零/ null

struct x {
    char a[10];
    char b[20];
    int i;
    char *c;
    char *d[10];
};
Run Code Online (Sandbox Code Playgroud)

我正在填充此结构,然后使用值.在下一次迭代中,我想在重新开始重用之前0null之前重置所有字段.

我怎样才能做到这一点?我可以使用memset或者必须通过所有成员然后单独进行吗?

c struct initialization

86
推荐指数
6
解决办法
16万
查看次数

为什么斐波那契数字在计算机科学中具有重要意义?

Fibonacci数字已经成为计算机科学学生递归的一个流行的介绍,并且有一个强烈的论据,即它们在自然界中存在.出于这些原因,我们很多人都熟悉它们.

它们也存在于其他地方的计算机科学中; 在基于序列的令人惊讶的有效数据结构和算法中.

我想到了两个主要的例子:

这些数字是否有某些特殊属性可以使它们优于其他数字序列?这是空间质量吗?他们还有哪些其他可能的应用程序?

这对我来说似乎很奇怪,因为在其他递归问题中有许多自然数字序列,但我从未见过加泰罗尼亚语堆.

algorithm math fibonacci data-structures

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

C++虚函数返回类型

是否有可能继承的类实现具有不同返回类型的虚函数(不使用模板作为返回)?

c++ inheritance overriding virtual-functions return-type

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

任意有理数的"猜数"游戏?

我曾经得到以下面试问题:

我在想一个正整数n.想出一个可以在O(lg n)查询中猜出它的算法.每个查询都是您选择的数字,我将回答"较低","较高"或"正确".

这个问题可以通过修改后的二进制搜索来解决,在该搜索中,列出2的幂,直到找到超过n的值,然后在该范围内运行标准二进制搜索.我认为这很酷的是,你可以比无限的力量更快地搜索特定数字的无限空间.

不过,我的问题是对这个问题稍加修改.假设我在0和1之间选择一个任意有理数,而不是选择正整数.我的问题是:您可以使用什么算法来最有效地确定我选择的有理数?

现在,我所拥有的最佳解决方案是在最多O(q)时间内通过隐式地走Stern-Brocot树(在所有有理数上的二叉搜索树)中找到p/q .但是,我希望运行时更接近我们为整数情况得到的运行时,可能是O(lg(p + q))或O(lg pq).有没有人知道如何获得这种运行时?

我最初考虑使用区间[0,1]的标准二进制搜索,但这只会找到具有非重复二进制表示的有理数,这几乎错过了所有的有理数.我还想过使用其他一些方法来枚举有理数,但是我似乎找不到一种方法来搜索这个空间给出更大/更小/更少的比较.

puzzle algorithm math rational-numbers

75
推荐指数
2
解决办法
7657
查看次数

实现一个队列,其中push_rear(),pop_front()和get_min()都是常量时间操作

我遇到了这个问题: 实现一个队列,其中push_rear(),pop_front()和get_min()都是常量时间操作.

我最初想过使用一个最小堆数据结构,它对于get_min()具有O(1)复杂度.但是push_rear()和pop_front()将是O(log(n)).

有谁知道实现这样一个有O(1)push(),pop()和min()的队列的最佳方法是什么?

我搜索了这个,并想指出这个算法极客线程.但似乎没有一个解决方案遵循所有3种方法的恒定时间规则:push(),pop()和min().

感谢所有的建议.

algorithm queue big-o data-structures

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

你从这个破碎的随机洗牌中得到了什么分布?

着名的Fisher-Yates shuffle算法可用于随机置换长度为N的阵列A:

For k = 1 to N
    Pick a random integer j from k to N
    Swap A[k] and A[j]
Run Code Online (Sandbox Code Playgroud)

我一遍又一遍地告诉我的一个常见错误是:

For k = 1 to N
    Pick a random integer j from 1 to N
    Swap A[k] and A[j]
Run Code Online (Sandbox Code Playgroud)

也就是说,不是从k到N选择一个随机整数,而是从1到N中选择一个随机整数.

如果你犯了这个错误怎么办?我知道由此产生的排列不是均匀分布的,但我不知道对于最终的分布有什么保证.特别是,有没有人有关于元素最终位置的概率分布的表达式?

language-agnostic random algorithm math shuffle

72
推荐指数
5
解决办法
6029
查看次数

保证执行memcpy(0,0,0)是否安全?

我不太熟悉C标准,所以请耐心等待.

我想知道,按标准保证memcpy(0,0,0)是否安全.

我能找到的唯一限制是,如果内存区域重叠,那么行为是未定义的......

但我们可以认为这里的内存区域重叠吗?

c memcpy null-pointer language-lawyer

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