小编dzh*_*lil的帖子

如何将符号链接视为Mercurial中的目录?

从0.9.4开始,当添加符号链接时,Mercurial会跟踪链接本身,而不是它指向的文件或目录.但是,有时需要跟踪符号链接指向的文件.

如何强制Mercurial将目录的符号链接视为常规目录?

mercurial symlink

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

使用C中的lapack计算矩阵的逆矩阵

我希望能够NxN使用lapack 计算C/C++中一般矩阵的逆矩阵.

我的理解是在lapack中进行反转的方法是使用dgetri函数,但是,我无法弄清楚它的所有参数应该是什么.

这是我的代码:

void dgetri_(int* N, double* A, int* lda, int* IPIV, double* WORK, int* lwork, int* INFO);

int main(){

    double M [9] = {
        1,2,3,
        4,5,6,
        7,8,9
    };

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

你将如何完成它以3x3使用dgetri_ 获得矩阵M 的逆?

c matrix-inverse lapack

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

将python字典翻译成C++

我有python代码,包含以下代码.

d = {}

d[(0,0)] = 0
d[(1,2)] = 1
d[(2,1)] = 2
d[(2,3)] = 3
d[(3,2)] = 4

for (i,j) in d:
    print d[(i,j)], d[(j,i)]
Run Code Online (Sandbox Code Playgroud)

不幸的是,循环遍历python中的所有键并不足以达到我的目的,我想将此代码转换为C++.什么是用于python字典的最佳C++数据结构,它以元组为键?上述代码的C++等价物是什么?

我查看了boost库中的稀疏矩阵,但是找不到一种只在非零元素上循环的简单方法.

c++ python dictionary tuples

22
推荐指数
3
解决办法
3万
查看次数

使用元组作为键构建无序映射

在使用Boost的C++程序中,我正在尝试构建一个无序映射,其键是双精度元组:

typedef boost::tuples::tuple<double, double, double, double> Edge;
typedef boost::unordered_map< Edge, int > EdgeMap;
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试使用键和值填充它时,初始化地图就完成了

EdgeMap map;
Edge key (0.0, 0.1, 1.1, 1.1);
map[key] = 1;
Run Code Online (Sandbox Code Playgroud)

我遇到以下错误消息:

/usr/include/boost/functional/hash/extensions.hpp:176: error: no matching function for call to ‘hash_value(const boost::tuples::tuple<double, double, double, double, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type>&)’
Run Code Online (Sandbox Code Playgroud)

我认为这是因为我需要为元组键指定一个哈希函数.我怎样才能做到这一点?

编辑:

根据以下建议,我写了以下实现:

#include <boost/tuple/tuple.hpp>
#include <boost/unordered_map.hpp>

typedef boost::tuples::tuple<double, double, double, double> Edge;

struct ihash
    : std::unary_function<Edge, std::size_t>
{
    std::size_t operator()(Edge const& e) const
    {
        std::size_t seed = 0;
        boost::hash_combine( seed, e.get<0>() );
        boost::hash_combine( seed, …
Run Code Online (Sandbox Code Playgroud)

c++ boost unordered-map tuples

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

使用完整路径链接到Mac上的动态库

我正在链接一个嵌入Matlab引擎的(Python扩展)库和以下命令(使用cmake生成)

c++ -mmacosx-version-min=10.6 -bundle -headerpad_max_install_names  -o library.so library.o /Applications/MATLAB_R2009b.app/bin/maci64/libeng.dylib /Applications/MATLAB_R2009b.app/bin/maci64/libmx.dylib -framework Python
Run Code Online (Sandbox Code Playgroud)

导致

$ otool -L library.so
library.so:
    @loader_path/libeng.dylib (compatibility version 0.0.0, current version 0.0.0)
    @loader_path/libmx.dylib (compatibility version 0.0.0, current version 0.0.0)
    /System/Library/Frameworks/Python.framework/Versions/2.6/Python (compatibility version 2.6.0, current version 2.6.1)
    /opt/local/lib/gcc44/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.13.0)
    /opt/local/lib/gcc44/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.0.0)
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试使用该库时,我收到一条错误消息:

ImportError: dlopen(./library.so, 2): Library not loaded: @loader_path/libmex.dylib
  Referenced from: ./library.so
  Reason: image not found
Run Code Online (Sandbox Code Playgroud)

我相信这个问题源于链接器包含表单中的matlab dylib文件@loader_path/libeng.dylib而不是使用完整路径这一事实,即使我给出了完整路径g++ …

macos linker dylib

20
推荐指数
3
解决办法
3万
查看次数

如何使用cmake只构建一次目标文件?

我有一个CMakeLists.txt文件,如下所示:

add_executable(exec1 exec1.c source1.c source2.c source3.c)
add_executable(exec2 exec2.c source1.c source2.c source3.c)
add_executable(exec3 exec3.c source1.c source2.c source3.c)
Run Code Online (Sandbox Code Playgroud)

source1.o source2.o source3.o文件需要很长时间才能构建,因为它们对于所有可执行文件都是通用的,所以我希望它们中的每一个都只构建一次.但是,cmake的当前行为是分别为每个exec目标重建它们,这是不必要的重复工作.

有没有办法告诉cmake只构建一次目标文件?

cmake

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

从Numpy矩阵构造Python集

我正在尝试执行以下操作

>> from numpy import *
>> x = array([[3,2,3],[4,4,4]])
>> y = set(x)
TypeError: unhashable type: 'numpy.ndarray'
Run Code Online (Sandbox Code Playgroud)

如何使用Numpy数组中的所有元素轻松高效地创建集合?

python arrays numpy set

17
推荐指数
3
解决办法
3万
查看次数

Node.js和管道ConnectionListener

所述的Node.js文档提供用于创建回波服务器的示例:

var net = require('net');
var server = net.createServer(function (c) {
  c.write('hello\r\n');
  c.pipe(c);
});
server.listen(8124, 'localhost');
Run Code Online (Sandbox Code Playgroud)

这条线的目的是什么?

  c.pipe(c);
Run Code Online (Sandbox Code Playgroud)

pipe node.js

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

boost.python中没有

我正在尝试翻译以下代码

d = {}
d[0] = None
Run Code Online (Sandbox Code Playgroud)

使用boost.python进入C++

boost::python::dict d;
d[0] = ?None
Run Code Online (Sandbox Code Playgroud)

如何在boost.python中获取None对象?

c++ python boost

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

使用CMake查找python site-packages目录

我使用CMake构建我的应用程序.如何找到python site-packages目录所在的位置?我需要路径才能编译扩展到python.

当我计划在Linux,Mac和Windows上部署我的应用程序时,CMake必须能够在所有三个主要操作系统上找到路径.

我试过用

include(FindPythonLibs)
find_path( PYTHON_SITE_PACKAGES site-packages ${PYTHON_INCLUDE_PATH}/.. )
Run Code Online (Sandbox Code Playgroud)

但这不起作用.

我也可以通过运行获取路径

python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()"
Run Code Online (Sandbox Code Playgroud)

在shell上,但我如何从CMake调用它?

解:

谢谢,亚历克斯.那么给我网站包目录的命令是:

execute_process ( COMMAND python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()" OUTPUT_VARIABLE PYTHON_SITE_PACKAGES OUTPUT_STRIP_TRAILING_WHITESPACE)
Run Code Online (Sandbox Code Playgroud)

需要OUTPUT_STRIP_TRAILING_WHITESPACE命令来删除尾随的新行.

python cmake

15
推荐指数
3
解决办法
6341
查看次数