小编zen*_*nna的帖子

课外定义的方法?

我想知道是否在类体之外定义了php方法,因为它们通常是在C++中完成的.我意识到这个问题与在PHP中定义类方法相同.但我相信他原来的问题是"声明"而不是"定义"所以所有答案似乎都不合适.

更新:

可能我的定义和声明的想法是有缺陷的.但是通过在类体之外定义,我的意思是与C++相当的东西

class CRectangle {
    int x, y;
  public:
    void set_values (int,int);
    int area () {return (x*y);}
};

void CRectangle::set_values (int a, int b) {
  x = a;
  y = b;
}
Run Code Online (Sandbox Code Playgroud)

php代码的所有示例都具有类体内部的代码,就像C++内联函数一样.即使在PHP中两者之间没有功能差异,它只是一个风格问题.

php c++ oop class

8
推荐指数
3
解决办法
5205
查看次数

在C++中评估&&(和)运算符的哪一侧(左侧或右侧)

和&&运算符评估的顺序是什么

例如以下代码

if (float alpha = value1-value2 && alpha > 0.001)
    //do something
Run Code Online (Sandbox Code Playgroud)

提出了一个例外,即在没有启动的情况下使用alpha.我认为&&的左边的表达式总是首先启动alpha的值,但似乎我可能错了

任何的想法?

谢谢

c++ operator-precedence logical-operators

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

包含Clang/LLVM的C++ 11头文件

我从源代码安装了clang和llvm,并尝试使用新标准的功能编译一些C++代码.

我发现虽然例如使用for range例如for (i : vector)工作正常,但是当我需要导入标题时,我遇到了麻烦(找不到头文件),例如<unordered_set><tuple>.

我是否需要使用新的libc ++来使用这些头文件,还是只需要进行简单的构建更改?目前我刚刚将clang和llvm构建到我的主目录中的一个文件夹中,并从那里调用clang ++.

c++ build llvm clang c++11

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

Cmake忽略CMAKE_BUILD_TYPE = Debug

我试图包含调试/发布相关的编译器标志,例如:

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++0x -Wall -DUSE_BOOST")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wall")
set(CMAKE_CSS_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Wall -O3")
Run Code Online (Sandbox Code Playgroud)

我使用如下命令创建我的构建文件夹:

cmake -DCMAKE_BUILD_TYPE=Release -D UseFortran=True -D CMAKE_CXX_COMPILER=g++-4.6 ~/repos/cliques/cliques
Run Code Online (Sandbox Code Playgroud)

但是在CMAKE版本2.8.7中似乎忽略了CMAKE_BUILD_TYPE.它似乎与2.8.4版本(在不同的机器上)完美配合,所以这种方法已被弃用或者是否存在其他问题?

泽纳

debugging release version cmake

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

仅在构造函数中声明成员

我是从C++背景到python

我一直在声明成员变量并以C++方式设置它们,如下所示:

class MyClass:
    my_member = []

    def __init__(self,arg_my_member):
        self.my_member = arg_my_member
Run Code Online (Sandbox Code Playgroud)

然后我在一些开源代码中注意到,初始声明my_member = []完全被遗漏,只在构造函数中创建.

这显然是可能的,因为python是动态的.

我的问题是,这是首选或Pythonic的做事方式,是否存在优点和缺点?

python constructor member

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

为什么C++仿函数优于具有命名方法的对象?

我最近对仿函数很兴奋,并且一直在使用它们.然后情况出现了,我需要我的仿函数执行两个不同的操作,我想到为我的仿函数添加另一个方法(不重载()运算符).这是不是不好的做法我不确定(也许你可以告诉我),但它让我思考为什么我首先使用仿函数而不仅仅是对象.所以我的问题是:

有没有什么特别的重载()运算符或者它是否比使用普通的命名方法更具语法吸引力?

更新:

首先,我知道为什么函子可能比其他问题中解释的函数指针更可取.我想知道为什么它们可以优于具有命名方法的对象.

其次,至于我何时想要使用另一个可能命名的函子方法的例子:基本上我有两个函数,一个计算一个叫做图形分区的模块性的东西compute_modularity(),另一个用于计算一些变化后的模块化增益分区compute_modularity_gain().我以为我可以将这些函数作为同一仿函数的一部分传递给优化算法,并将增益作为命名函数.我不只是传递了两个函子到算法,其原因是,我想执行这一compute_modularity_gain()只与使用一起选择compute_modularity(),而不是另一个函子如compute_stability()(应该仅被使用compute_stability_gain().换句话说,增益功能必须紧密加上它的兄弟功能.如果还有其他方法我可以执行这个约束,那么请告诉我.

c++ functor function-object

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

MySQL权限被本地拒绝,但可以远程连接

我试图通过命令连接到远程服务器上的mysql数据库(通过ssh):

mysql -u me -h mydomain.com -p
Run Code Online (Sandbox Code Playgroud)

但它失败了ERROR 1045(28000):访问被拒绝用户..错误

mysql -u me -h localhost -p
Run Code Online (Sandbox Code Playgroud)

作品

现在这不仅仅是因为我没有设置权限,因为此数据库的权限设置为%或me​​用户的任何主机.

事实证明,我可以使用同一个用户从本地计算机正确连接到服务器.即从我的本地机器运行以下命令:

mysql -u me -h mydomain.com -p
Run Code Online (Sandbox Code Playgroud)

所以我的问题为什么会发生这种情况,我该如何解决?当我使用域名而不是localhost时,为什么我不能从我的服务器连接到我的mysql服务器,即使权限设置为接受来自任何主机的连接.

mysql dns permissions mysql-error-1045

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

在条件中重用值,从而提高lisp/clojure的效率

我有一个cond,例如以下形式:

(cond
  (condition1) (consequent1)
  (condition2) (consequent2))
Run Code Online (Sandbox Code Playgroud)

在条件2中说我想计算一些价格昂贵的价值,所以我宁愿只做一次.如果condition2为true,那么我想在consequent2中使用这个昂贵的值.我的困境是,我不想重新计算条件和结果中的价值,因为这是浪费.我也不想把整个cond扔进一个更大的let函数中,例如

(let [value-used-in-cond2 do-expensive-computation]
  (cond
  (condition1) (consequent1)
  (condition2) (consequent2)))
Run Code Online (Sandbox Code Playgroud)

因为如果我从未达到条件2,即如果condition1为真,我不想计算这个值.

有没有惯用的方法来解决这个问题?首先想到的是记住昂贵的功能,但必须有更简单的解决方案.

lisp performance conditional clojure

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

高效的笛卡尔积算法忽略了术语

假设我有A_1,...A_n,例如[[a b c][d e][f]].我想找到这些集合的笛卡尔积,但不包括任何忽略列表元素的超集.

例如,如果我的忽略列表是[[a e][c]],笛卡尔积的结果将是[[a d f][b d f][b e f]].注意任何术语c都不在那里,也不是[a e f].

当然,我可以做到这一点的方法是找到完整的笛卡尔积,然后删除有问题的物品,但我想要一种更有效的方法,这样我就可以避免首先检查解决方案.

我有一个初步的解决方案,涉及逐步建立购物车产品中的每个术语,并在每个阶段我删除任何元素,A_i如果将它们添加到我正在构建的术语将导致它成为任何一个忽略的超集.这样工作正常,并且比天真的解决方案更好,但仍然有大量的冗余检查,这也取决于集合的呈现顺序.例如,如果[f]在我的忽略列表中,我仍会继续尝试创建术语,直到我到达[f]然后丢弃.

具体来说,我的clojure实现是

(defn first-elements
  "Get the first elements of a set of sets, unless ignored"
  [sets ignores in-ignore?]
  (loop [product-tuple [] sets sets]
    (println "sets " sets)
    (cond
      (or (nil? sets) (nil? (first sets)))
      product-tuple

      :else
      (if-let [set-op (remove #(in-ignore? product-tuple ignores %) (first sets))]
        (if (and …
Run Code Online (Sandbox Code Playgroud)

algorithm performance clojure cartesian-product

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

如何使用索引更新张量的元素?

我正在寻找一个“更新”功能,发生在张量t1,一些指标和值,并返回一个新的张量t2,这是t1但在相应改变的指标值。

这似乎是最基本的功能,但是我没有在文档中看到它。

我所看到的是tf.scatter_update,它Variable以某种方式更新了:,这正是我想要的。我可以想像构造一个Variablefor t2(这项工作吗?),但是t2不应认为它是有状态的变量,而是用任意初始值填充它。

或者,我可以手动构建一个Python的嵌套列表中添加的每个元素t1t2独立,然后调用tf.convert_to_tensor。我可能是错的,但这似乎效率很低。

python indexing tensorflow

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