如何使用std :: cout和mini-gmp mpz-t?

时间:2017-03-28 14:15:56

标签: c++

正如标题所示,我尝试使用带有mini-gmp的import networkx as nx A=nx.complete_graph(5) B=nx.complete_graph(8) jaccard=len(set(A.edges())&set(B.edges()))/len(set(A.edges())|set(B.edges())) 打印mpz_t值时遇到问题。我可以使用std::cout转换为整数,一切似乎都有效,但这显然完全违背了gmp的目的。

当我使用mpz_get_si时,似乎打印了std::cout变量的内存地址。有没有人有使用mini-gmp打印mpz_t值的解决方案?

1 个答案:

答案 0 :(得分:0)

通过此文档,该类似乎会覆盖cout,因此应该支持https://gmplib.org/manual/C_002b_002b-Formatted-Output.html

注意:由于mini-gmp vs gmp

,这可能是功能丢失

尽管它确实谨慎:

“但请注意,ostream输出(和istream输入,请参阅C ++格式化输入)是唯一可用于GMP类型的重载,例如使用带有mpz_t的+将产生不可预测的结果。对于具有重载的类,请参阅C ++类接口“。

除此之外如果你得到的内存地址你认为应该有一个值,你可以确保你实际上没有处理mpz_t *并简单地取消引用它,看看你是否得到了类型错误。没有看到任何代码就很难分辨