小编dzh*_*lil的帖子

手动递增和递减boost :: shared_ptr?

有没有办法在C++中手动递增和递减shared_ptr的计数?

我试图解决的问题如下.我正在用C++编写一个库,但接口必须是纯C.在内部,我想使用shared_ptr来简化内存管理,同时保留通过C接口传递原始指针的能力.

当我通过接口传递一个原始指针时,我想增加引用计数.然后,客户端将负责调用一个函数,该函数将在不再需要传递的对象时减少引用计数.

c++ boost shared-ptr

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

将matlab矩阵转换为向量

我想在预定义的位置获得Matlab矩阵元素的向量.例如,我有以下内容

>> i = [1,2,3];
>> j = [1,3,4];
>> A = [1,2,3,4; 5,6,7,8; 9,10,11,12; 13,14,15,16]

A =

     1     2     3     4
     5     6     7     8
     9    10    11    12
    13    14    15    16
Run Code Online (Sandbox Code Playgroud)

我想要一个矢量,它会给我在Acorrespongin的位置的值i,j.我试过了

A(i,j)

ans =

     1     3     4
     5     7     8
     9    11    12
Run Code Online (Sandbox Code Playgroud)

但这不是我想要的.我想得到以下内容

>> [A(i(1),j(1)); A(i(2),j(2));A(i(3),j(3))]

ans =

     1
     7
    12
Run Code Online (Sandbox Code Playgroud)

什么是matlab语法?请避免建议循环或任何不是矢量化形式的东西,因为我需要快速完成.希望会有一些内置功能.

matlab vector matrix

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

cmake add_library在自定义位置

我需要构建一个库,该库将放置在存储在变量CUSTOM_OUTDIR中的自定义位置.目前,我使用以下代码来确保将库复制到其正确的位置.

ADD_LIBRARY(example MODULE example.c)

GET_TARGET_PROPERTY(FILEPATH example LOCATION)
ADD_CUSTOM_COMMAND(
    TARGET example POST_BUILD 
    COMMAND ${CMAKE_COMMAND} 
    ARGS -E copy ${FILEPATH} ${CUSTOM_OUTDIR}
)
Run Code Online (Sandbox Code Playgroud)

但是,这不是一个好的解决方案,因为复制是在post_build完成的,我最终得到了两个库的副本.有没有办法只为example库设置CMAKE_BINARY_DIR,以便只有一个副本保存在正确的位置?

cmake

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

swig java中的简单类型映射示例

我正在尝试使用swig包装本机C++库,并且我一直试图time_t在C中转换为longJava.我已成功使用swig与python,但到目前为止,我无法让上面的typemap在Java中工作.在python中它看起来像这样

%typemap(in) time_t
{
    if (PyLong_Check($input))
        $1 = (time_t) PyLong_AsLong($input);
    else if (PyInt_Check($input))
        $1 = (time_t) PyInt_AsLong($input);
    else if (PyFloat_Check($input))
        $1 = (time_t) PyFloat_AsDouble($input);
    else {
        PyErr_SetString(PyExc_TypeError,"Expected a large number");
        return NULL;
    }
}

%typemap(out) time_t
{
    $result = PyLong_FromLong((long)$1);
}
Run Code Online (Sandbox Code Playgroud)

我想从Java到C的地图将是:

%typemap(in) time_t {
    $1 = (time_t) $input;
}
Run Code Online (Sandbox Code Playgroud)

我如何完成从C到Java的外图?

%typemap(out) time_t ???
Run Code Online (Sandbox Code Playgroud)

我需要像下面那样的打字机吗?

%typemap(jni) 
%typemap(jtype) 
%typemap(jstype) 
Run Code Online (Sandbox Code Playgroud)

我需要这个来包装像这样的C函数:

time_t manipulate_time (time_t dt);
Run Code Online (Sandbox Code Playgroud)

java java-native-interface swig native

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

从 Jython 读取 sqlite 数据库

我正在尝试运行此处发布的 jython sqlite 示例。

################################################################################
#
#  sqlite_using_ziclix - An example of using the Python DB-API 2.0 compliant 
#                        ziclix implementation to interact with a SQLite database.
#                        Creates a 'planet' table in a SQLite database
#                        named 'solarsys.db', populates it with some data and 
#                        then executes a query to retrieve data from that table.
#
#  Works with Jython 2.5, must have the zentus sqlitejdbc.jar in your
#  CLASSPATH at execution time.
#  Known to work with …
Run Code Online (Sandbox Code Playgroud)

sqlite jython

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

在python中自动调用与特定模式匹配的所有函数

在python我有很多功能,如下面的那些.我想运行名称匹配的所有函数,setup_*而不必从main显式调用它们.运行函数的顺序并不重要.我怎么能在python中这样做?

def setup_1():
    ....

def setup_2():
    ....

def setup_3():
    ...

...

if __name__ == '__main__':
    setup_*()
Run Code Online (Sandbox Code Playgroud)

python automation

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

将 BLAS 中的三个矩阵相乘,中间一个是对角线

A是一个MxK矩阵,B是一个大小为 的向量K,并且C是一个KxN矩阵。我应该使用哪组 BLAS 运算符来计算下面的矩阵?

M = A*diag(B)*C
Run Code Online (Sandbox Code Playgroud)

实现这一点的一种方法是使用三个 for 循环,如下所示

for (int i=0; i<M; ++i)
    for (int j=0; j<N; ++j)
        for (int k=0; k<K; ++k)
            M(i,j) = A(i,k)*B(k)*C(k,j);
Run Code Online (Sandbox Code Playgroud)

为了获得更好的速度效率,是否真的值得在 BLAS 中实现它?

c blas matrix-multiplication

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

Pylons vs Turbogears

我正在考虑是否应该将Turbogears或Pylons用于我的项目.我知道Turbogears2是基于Pylons的.Turbogears提供的Pylon没有什么?谢谢.

pylons turbogears2

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

在boost :: geometry中初始化多边形

我是通用几何库的新手,建议包含在boost中:

http://geometrylibrary.geodan.nl/
Run Code Online (Sandbox Code Playgroud)

我有两个向量vector<int> Xb, Yb,我试图从中创建一个多边形.我试图获得以下代码片段的内容:

 polygon_2d P;

 vector<double>::const_iterator xi;
 vector<double>::const_iterator yi;

 for (xi=Xb.begin(), yi=Yb.begin(); xi!=Xb.end(); ++xi, ++yi)
  P.push_back (make<point_2d>(*xi, *yi));
Run Code Online (Sandbox Code Playgroud)

上面的代码不起作用,抱怨P没有push_back成员函数.如何从具有坐标的点初始化多边形vector<int> Xb,vector<int> Yb

c++ boost polygon boost-geometry

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

在numpy或matlab中从满秩的非方阵中获得可逆方阵

假设你有一个满级NxM矩阵A,其中M>N.如果我们用C_i(用尺寸Nx1)表示列,那么我们可以将矩阵写为

A = [C_1, C_2, ..., C_M]
Run Code Online (Sandbox Code Playgroud)

如何获得原始矩阵的第一个线性独立列A,以便您可以构造一个新NxN矩阵B,该矩阵是具有非零行列式的可逆矩阵.

B = [C_i1, C_i2, ..., C_iN]
Run Code Online (Sandbox Code Playgroud)

如何{i1, i2, ..., iN}在matlab或python numpy中找到索引?这可以使用奇异值分解来完成吗?代码片段将非常受欢迎.

编辑:为了使这更具体,请考虑以下python代码

from numpy import *
from numpy.linalg.linalg import det

M = [[3, 0, 0, 0, 0],
     [0, 0, 1, 0, 0],
     [0, 0, 0, 0, 1], 
     [0, 2, 0, 0, 0]]
M = array(M)

I = [0,1,2,4]
assert(abs(det(M[:,I])) > 1e-8)
Run Code Online (Sandbox Code Playgroud)

因此,给定矩阵M,需要找到一组N线性独立列向量的索引.

python matlab numpy linear-algebra svd

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