有没有办法在C++中手动递增和递减shared_ptr的计数?
我试图解决的问题如下.我正在用C++编写一个库,但接口必须是纯C.在内部,我想使用shared_ptr来简化内存管理,同时保留通过C接口传递原始指针的能力.
当我通过接口传递一个原始指针时,我想增加引用计数.然后,客户端将负责调用一个函数,该函数将在不再需要传递的对象时减少引用计数.
我想在预定义的位置获得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语法?请避免建议循环或任何不是矢量化形式的东西,因为我需要快速完成.希望会有一些内置功能.
我需要构建一个库,该库将放置在存储在变量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,以便只有一个副本保存在正确的位置?
我正在尝试使用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) 我正在尝试运行此处发布的 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) 在python我有很多功能,如下面的那些.我想运行名称匹配的所有函数,setup_*而不必从main显式调用它们.运行函数的顺序并不重要.我怎么能在python中这样做?
def setup_1():
....
def setup_2():
....
def setup_3():
...
...
if __name__ == '__main__':
setup_*()
Run Code Online (Sandbox Code Playgroud) 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 中实现它?
我正在考虑是否应该将Turbogears或Pylons用于我的项目.我知道Turbogears2是基于Pylons的.Turbogears提供的Pylon没有什么?谢谢.
我是通用几何库的新手,建议包含在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?
假设你有一个满级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线性独立列向量的索引.