小编zan*_*ngw的帖子

"x <y <z"比"x <y和y <z"快吗?

这个页面,我们知道:

链式比较比使用and运算符更快.写x < y < z而不是x < y and y < z.

但是,我得到了不同的结果测试以下代码片段:

$ python -m timeit "x = 1.2" "y = 1.3" "z = 1.8" "x < y < z"
1000000 loops, best of 3: 0.322 usec per loop
$ python -m timeit "x = 1.2" "y = 1.3" "z = 1.8" "x < y and y < z"
1000000 loops, best of 3: 0.22 usec per loop
$ python -m …
Run Code Online (Sandbox Code Playgroud)

python performance

128
推荐指数
4
解决办法
9245
查看次数

析构函数中奇怪的枚举

目前,我正在阅读源代码Protocol Buffer,我发现这里enum定义一个奇怪的代码

  ~scoped_ptr() {
    enum { type_must_be_complete = sizeof(C) };
    delete ptr_;
  }

  void reset(C* p = NULL) {
    if (p != ptr_) {
      enum { type_must_be_complete = sizeof(C) };
      delete ptr_;
      ptr_ = p;
    }
  }
Run Code Online (Sandbox Code Playgroud)

为什么enum { type_must_be_complete = sizeof(C) };定义在这里?它是干什么用的?

c++ enums

83
推荐指数
3
解决办法
3549
查看次数

mongo:在 mongodb 6.0 docker 容器上找不到命令

通过安装最新的 mongo docker 镜像后

docker pull mongo:latest

docker run --name mongo -d mongo:latest
Run Code Online (Sandbox Code Playgroud)

然后进入这个docker容器并运行mongo

docker exec -it mongo /bin/sh
# mongo
/bin/sh: 2: mongo: not found

# env
HOSTNAME=2ffb8dac9717
HOME=/data/db
TERM=xterm
MONGO_PACKAGE=mongodb-org
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
MONGO_MAJOR=6.0
JSYAML_VERSION=3.13.1
GOSU_VERSION=1.12
MONGO_REPO=repo.mongodb.org
PWD=/
MONGO_VERSION=6.0.1
Run Code Online (Sandbox Code Playgroud)

检查完文件夹后/usr/bin,下面没有了mongo。这里有什么遗漏吗?如何在mongodb 6.0 docker中运行mongo shell?

mongodb docker

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

有效地获得给定数字的所有除数

根据这篇文章,我们可以通过以下代码获得数字的所有除数.

for (int i = 1; i <= num; ++i){
    if (num % i == 0)
        cout << i << endl;
}
Run Code Online (Sandbox Code Playgroud)

例如,数字的除数241 2 3 4 6 8 12 24.

在搜索了一些相关帖子后,我没有找到任何好的解决方案.有没有有效的方法来实现这一目标?

我的解决方案

  1. 通过此解决方案查找给定数字的所有主要因子.
  2. 获得这些素因子的所有可能组合.

但是,它似乎不是一个好的.

c++ algorithm math factorization

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

为什么在ES6的箭头函数中没有定义参数?

对于此代码

var sum = () => {console.log(arguments); ... }
sum(2, 3)
Run Code Online (Sandbox Code Playgroud)

得到错误Uncaught ReferenceError: arguments is not defined.

为什么arguments没有在箭头功能中定义?

javascript ecmascript-6

43
推荐指数
0
解决办法
6597
查看次数

如何在javascript中展平嵌套数组?

我们知道,[[0, 1], [2, 3], [4, 5]]使用该方法展平数组reduce()

var flattened = [[0, 1], [2, 3], [4, 5]].reduce(function(a, b) {
  return a.concat(b);
});
Run Code Online (Sandbox Code Playgroud)

因此,如何扁平化这个数组[[[0], [1]], [[2], [3]], [[4], [5]]][0, 1, 2, 3, 4, 5]

javascript arrays

31
推荐指数
8
解决办法
6万
查看次数

如何理解表达式"{} == true"?

我尝试理解doc {} == true部分后面的表达式.7.2.12Ecma-262

  1. 如果Type(y)是布尔值,则返回比较结果 x == ToNumber(y)

结果ToNumber(true)1,然后

{} == 1

  1. 如果Type(x)是Object而Type(y)是String,Number或Symbol,则返回比较结果ToPrimitive(x) == y.

我现在很困惑ToPrimitive({}).

  1. 如果提示是"字符串",那么

    一个.让methodNames为«"toString","valueOf"».

  2. 其他,

    一个.让methodNames为«"valueOf","toString"».

应该ToPrimitive({})被解释为{}.toString(){}.valueOf()

假设toString()被调用.

如果Type(x)是String而Type(y)是Number,则返回比较结果 ToNumber(x) == y

{} == true可能是ToNumber(ToPrimitive({})) == ToNumber(true)吗?

javascript

22
推荐指数
2
解决办法
979
查看次数

为什么定义了rsize_t?

我发现strncpy_s()VS2013定义

errno_t __cdecl strncpy_s
(
  _Out_writes_z_(_SizeInBytes) char * _Dst, 
  _In_ rsize_t _SizeInBytes, 
  _In_reads_or_z_(_MaxCount) const char * _Src, 
  _In_ rsize_t _MaxCount
);
Run Code Online (Sandbox Code Playgroud)

rsize_t 是:

typedef size_t rsize_t;
Run Code Online (Sandbox Code Playgroud)

我认为这是Visual Studio的一个技巧.但是,我发现此功能在此页面上定义如下

errno_t strncpy_s
(
  char *restrict dest,
  rsize_t destsz,
  const char *restrict src, 
  rsize_t count
); 
Run Code Online (Sandbox Code Playgroud)

为什么rsize_t定义在这里?如果size_t在这里使用怎么办?有什么特殊情况可以使用rsize_t吗?

c++ size-t tr24731

21
推荐指数
2
解决办法
7880
查看次数

为什么JavaScript中的"〜undefined"为-1?

根据这篇文章,运行以下代码

> ~function () { console.log('foo');}()
  foo
  -1
Run Code Online (Sandbox Code Playgroud)

众所周知,上述匿名函数的返回值是undefined.为什么~undefined-1?我找不到任何类似的问题.

javascript undefined

20
推荐指数
2
解决办法
462
查看次数

如果在JavaScript中遇到加法(+)运算符,后缀增量如何工作?

首先,我知道后面谈到的表达方式side-effects,不应该在生产环境中使用.我只想JavaScript通过他们了解.所有这些都经过测试Chrome.

var a = 42;
var b = "42";
a + ++b; // result is 85 
Run Code Online (Sandbox Code Playgroud)

这是我的理解a + ++b,

根据运算符优先级,Prefix Increment (++)(优先级15)优先级高于Addition(+)(优先级13).可以解析VAR 来,请参阅.然后结果可能是.++bToNumber(GetValue(expr))4312.5.7 Prefix Increment Operatora + 4385

然而,

var a = 42;
var b = "42";
a++ + b; // "4242"
Run Code Online (Sandbox Code Playgroud)

为什么结果a++ + b"4242"

我试着理解结果"4242",似乎首先a++返回42,然后是42 + '42',首先 …

javascript

20
推荐指数
5
解决办法
1211
查看次数