小编Vin*_*ond的帖子

如果我知道仅将使用现有元素,是否可以在数组开头之前传递指针?

我有一个代码,其中执行如下操作:

double computeSometing(const double * parameters)
{
  return useValues(parameters - 10); 
  // in this special case, useValues only uses values that are 
  // at least at parameters[0] or after
}
Run Code Online (Sandbox Code Playgroud)

这看起来很糟糕,但是仅在以下情况下才调用此代码:在这种情况下,我知道useValues在10号之前不会使用任何值(情况并非总是如此),因此所使用的所有值都是“ inside” parameters。那是不确定的行为吗?我知道它只能在我使用过的所有编译器/平台上运行,但这并没有定义它。

我这样做是为了避免将其内容复制parameters到具有10个以上元素的新数组中,因为此函数对性能敏感。

c++ arrays pointers pointer-arithmetic language-lawyer

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

为什么const类可以自己初始化?

今天我被一个非常愚蠢但很难被发现的bug所击中.这是相关代码:

class Vector;
class PointIterator {
  const Vector & x;
  const Vector & yv;

  PointIterator(const Vector & xv, const Vector & yvo) : 
    x(xv), yv(yv) { ;};
  //          ^^ here is wrong
};
Run Code Online (Sandbox Code Playgroud)

为什么这样的代码合法C++?有没有可以使用yv变量的情况?我知道类似的问题int x = x+1;,(参见这个问题),但后者没有正确初始化,你仍然可以使用x变量,而在上面的代码中,我认为你不能使用yv.

加分点:是否有任何编译选项可以让我发现这个?(最好使用gcc,但我也使用clang),除了"未使用的参数"警告(我有很多这些,我知道我应该清理它们).

c++

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

我怎么知道 `git gc --auto` 是否做了什么?

git gc --auto作为自动保存脚本的一部分运行。如果git gc --auto做了什么,我想进一步清理,但如果git gc --auto觉得不需要做些什么,我想省去麻烦。有没有办法检查 的返回值git gc --auto,或者事先检查是否有必要运行它?

git

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