小编int*_*jay的帖子

Boost/Python:如何使用/转换提取的对象?

假设:

using namespace boost::python;
void myClass::test(numeric::array& arrayParam) {
    const tuple &shape = extract<tuple>(arrayParam.attr("shape"));
}
Run Code Online (Sandbox Code Playgroud)

我想将它转换为int并打印例如.我试过int x = shape[0];但它给了我一个"无法将'boost :: python :: api :: const_object_item'转换为初始化'消息中的'int'.

c++ python boost boost-python

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

执行x87 FPATAN操作的扩展GCC内联汇编中的clobber列表的说明

以下代码位于MinGW x86inline.h文件中:

/*
** in-line atan2(y,x) function.
** Computes arctan(y/x).
*/
#define atan2(y,x) atan2_x87_inline(y,x)
double atan2_x87_inline(double y,double x);
extern __inline__ double atan2_x87_inline(double y,double x)
    {
    double result;
    __asm__ ("fpatan" : "=t" (result) : "0" (x), "u" (y) : "st(1)");
    return(result);
    }
Run Code Online (Sandbox Code Playgroud)

据我所知,x87 fpatan操作使用st(0)st(1)寄存器,覆盖寄存器的内容st(1),然后弹出顶部寄存器.

那么为什么只st(1)包括在clobber列表中,而不是st(0)呢?

编辑:实际上,它为什么会需要一个撞名单,因为在所有的st(0)st(1)应该知道通过编译器"t""u"约束.是对的吗?

c x86 assembly gcc inline-assembly

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

python ast模块在pydev中失败,在cmdline python中成功

这很奇怪。我在 PyDev 中运行这个程序

import ast
import sys

if __name__ == '__main__':
    print sys.version
    src = '''
print 3*4+5**2
'''
    print dir(ast)
    n = ast.parse(src)
    print n
Run Code Online (Sandbox Code Playgroud)

它输出:

2.7.5 |Anaconda 1.6.0 (64-bit)| (default, May 31 2013, 10:45:37) [MSC v.1500 64 bit (AMD64)]
['__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__']
Traceback (most recent call last):
  File ["C:\research\ast\ast\test1.py", line 16, in <module>
    n = ast.parse(src)
AttributeError: 'module' object has no attribute 'parse'
Run Code Online (Sandbox Code Playgroud)

但是当我在 cmdline 中运行它时,它会打印以下内容:

C:\research\ast\ast>python test1.py
2.7.5 |Anaconda 1.6.0 (64-bit)| (default, May 31 …
Run Code Online (Sandbox Code Playgroud)

python pydev

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

始终在Snakefile(snakemake)中运行规则

我正在为snakemake工作流程编写Snakefile。作为工作流程的一部分,我需要检查数据库中的一组记录是否已更改,以及是否已重新下载它们。

我的想法是编写一条规则来检查数据库时间戳并将其写入输出文件。并将时间戳文件用作我的下载规则的输入。问题是一旦写入了时间戳文件,该时间戳规则将永远不会再次运行,因此该时间戳将永远不会更新。

有没有办法使该规则每次运行。(我知道我可以从shell强制使用它,但是我想在Snakefile中指定它)或者,有没有更好的方法来处理这个问题?

python snakemake

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

构造函数初始化顺序和引用传递

嗨,我有一个关于构造函数初始化顺序的问题.如下所示

struct B {}
struct A
{
    B& b;
    A(B& b) : b(b) {}
}
struct C
{
    B b;
    A a;
    C() : b(),a(b) {}
}
struct D
{
    A a;
    B b;
    D() : a(b),b() {}
}
Run Code Online (Sandbox Code Playgroud)

我知道C是有效的,因为b在a之前被初始化.但D怎么样?b还没有建成,但地址应该已经知道了,所以它应该是安全的吗?

谢谢

c++ constructor

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

在奇怪的表格上打印特定的数字

我有一个由非负整数组成的表,这些整数以这种方式排列:表中的每个元素都是不在其左侧或上方出现的最小值.这是一个6x6网格的示例:

0 1 2 3 4 5
1 0 3 2 5 4
2 3 0 1 6 7
3 2 1 0 7 6
4 5 6 7 0 1
5 4 7 6 1 0 
Run Code Online (Sandbox Code Playgroud)

第一行和第一行以0 1 2 3 4 5开始...在坐标(x,x)中始终为0,如您所见.在此之后的每个图块上,您必须放置在同一行或列上尚不存在的最小正数.就像在数独拼图中一样:在同一行和列上不能有两次数字.

现在我必须在给定的坐标(y,x)中打印数字.例如[2,5] = 5

我提出了一个有效的解决方案,但它占用了太多的内存和时间,我只知道还有另一种方法.我的时间限制是1秒,我必须找到的坐标数最多可以达到(1000000,1000000).

这是我目前的代码:

#include <iostream>
#include <vector>

int main()
{
    int y, x, grid_size;
    std::vector< std::vector<int> > grid;

    std::cin >> y >> x; // input the coordinates we're looking for

    grid.resize(y, std::vector<int>(x, 0)); // resize …
Run Code Online (Sandbox Code Playgroud)

c++ algorithm

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

在python问题的计算器

我在python中制作了一个计算器

import time
print("Calculator 1.0")
print("made by AnAwesomeMiner")
print("Number 1 in calculation")
x = input()
print("Number 2")
y = input()
print("calculating")
time.sleep(3)
print("why is this not done yet")
time.sleep(3)
print("god this is taking forever")
time.sleep(3)
print("done")
answear = x + y
print(answear)
Run Code Online (Sandbox Code Playgroud)

但是当我运行它并做例如123和321我得到123321而不是444时,我做错了什么,顺便说一句,我不认为我是一个新手编程的菜鸟

python python-3.x

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

在象限中计算点数

我必须计算每个象限中有多少点,我只有以下数据:
没有x> 0,x <0,y> 0和y <0的点.
对于前者 对于跟随图像,我的数据
x> 0 = 4,x <0 = 3
y> 0 = 4,y <0 = 3
是否可以计算否.有这么多数据的每个象限中的点数?

点图像

math logic

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

为什么《Effective Modern C++》第 25 条中说“不会出现临时 std::string 对象”?

在Effective Modern C++的Item 25(170p~171p)中,代码如下:

\n\n
class Widget {\npublic:\nvoid setName(const std::string& newName) // set from\n{ name = newName; } // const lvalue\nvoid setName(std::string&& newName)     // set from\n{ name = std::move(newName); }          // rvalue\n\xe2\x80\xa6\n};\n\nw.setName("Adela Novak");\n
Run Code Online (Sandbox Code Playgroud)\n\n
\n

当 setName 的版本采用通用引用时,字符串文字“Adela Novak”将被传递给 setName,在那里它将被传送给 w 内的 std::string 的赋值运算符。因此,w\xe2\x80\x99s\n name 数据成员将直接从字符串\n 文字分配;不会出现临时 std::string 对象

\n
\n\n

我不明白为什么如果调用采用通用引用的 setName 版本, “不会出现临时 std::string 对象”。newName不应该被创建为临时 std::string 吗?

\n

c++ string c++11

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

MFC C++:setfocus也设置了捕获吗?

我有一个调用DoModal()的CDialog,对话框打开,其他一切都被禁用,但由于某种原因我只有键盘捕获而不是鼠标.

鼠标捕获仍然在它所在的最后一项上.

如果我在DoModal之前调用setfocus,它不起作用,但是如果我在DoModal之前执行setCapture它可以工作.

有谁可以向我解释一下?

问题是什么?我想了解为什么我需要在DoModal之前调用setCapture或releaseCapture(btw-releaseCapture也可以...)

c++ mfc setfocus

0
推荐指数
1
解决办法
1180
查看次数