小编Hao*_*Shi的帖子

函数返回由向量组成的元组

我试图在我的函数中避免输出参数.旧功能是:

void getAllBlockMeanError(
    const vector<int> &vec, vector<int> &fact, vector<int> &mean, vector<int> &err)
Run Code Online (Sandbox Code Playgroud)

这里vec是输入参数,fact,meanerr输出参数.我试图将输出参数分组为一个元组:

tuple< vector<int>, vector<int>, vector<int> > 
                                  getAllBlockMeanErrorTuple(const vector<int> &vec)
{
    vector<int> fact, mean, err;
    //....
    return make_tuple(fact, mean, err);
}
Run Code Online (Sandbox Code Playgroud)

现在我可以调用新函数:

tie(fact, mean, err) = getAllBlockMeanErrorTuple(vec);
Run Code Online (Sandbox Code Playgroud)

它对我来说看起来更干净.虽然我有一个问题,如何平等分配tie(fact, mean, err)工作?它是做深拷贝还是移动?因为fact,meanerrgetAllBlockMeanErrorTuple就会被破坏,我希望它做的举动,而不是深拷贝.

c++ tuples function c++11

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

cmake FindLAPACK.cmake 和 FindBLAS.cmake 无法链接 lapack 和 blas

我已经在我的笔记本电脑上正确安装了 lapack 和 blas,我可以通过使用链接

-L/usr/lib64 -lblas -llapack
Run Code Online (Sandbox Code Playgroud)

在我的 Makefile 中。

我想使用 cmake 创建一个 Makefile 并链接 lapack 和 blas,我在 /usr/share/cmake/Modules/ 中使用 cmake 提供的 FindLAPACK.cmake 和 FindBLAS.cmake

CMakeLists.txt 是使用:

find_package(BLAS)
find_package(LAPACK)
if(LAPACK_FOUND AND BLAS_FOUND)
   set(lapackblas_libraries "${BLAS_LIBRARIES} ${LAPACK_LIBRARIES}")
endif()

target_link_libraries(code_exe ${lapackblas_libraries})
Run Code Online (Sandbox Code Playgroud)

code_exe是我链接 lapack 和 blas 库的可执行文件,出现错误

make[2]: *** No rule to make target `/usr/lib64/libblas.so /usr/lib64/liblapack.so', needed by `test/tensortest'.  Stop.
make[1]: *** [test/CMakeFiles/tensortest.dir/all] Error 2
make: *** [all] Error 2
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮助我吗?非常感谢。

makefile cmake shared-libraries blas lapack

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

标签 统计

blas ×1

c++ ×1

c++11 ×1

cmake ×1

function ×1

lapack ×1

makefile ×1

shared-libraries ×1

tuples ×1