- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
如何在 C++ 中创建一个包含 mpz 变量的数组?
我正在尝试使用:
int array_size = 5;
mpz_t numerator_arr;
for (i = 0; i < array_size; i++) {
mpz_init2(numerator_arr[i], 100);
}
numerator_arr = { 1, -1, 1, 5, -691 };
但这会返回错误:
test.cpp: In function ‘int main()’:
test.cpp:13:34: error: cannot convert ‘__mpz_struct’ to ‘mpz_ptr {aka __mpz_struct*}’ for argument ‘1’ to ‘void __gmpz_init2(mpz_ptr, mp_bitcnt_t)’
mpz_init2(numerator_arr[i], 100);
^
test.cpp:17:38: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11 [enabled by default]
numerator_arr = { 1, -1, 1, 5, -691 };
^
test.cpp:17:16: error: assigning to an array from an initializer list
numerator_arr = { 1, -1, 1, 5, -691 };
^
编辑**:经过更多挖掘,我发现我需要声明我的数组
mpz_t *numerator_arr = new mpz_t[array_size];
但编译器仍然返回错误:
test.cpp:17:38: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11 [enabled by default]
numerator_arr = { 1, -1, 1, 5, -691 };
^
test.cpp:17:16: error: cannot convert ‘<brace-enclosed initializer list>’ to ‘__mpz_struct (*)[1]’ in assignment
numerator_arr = { 1, -1, 1, 5, -691 };
^
当我尝试使用
vector<mpz_class> numerator_arr{ 1, -1, 1, -1, 5, -691, 7 };
它给了我错误:
test.cpp:12:60: error: in C++98 ‘numerator_arr’ must be initialized by constructor, not by ‘{...}’
vector<mpz_class> numerator_arr{ 1, -1, 1, -1, 5, -691, 7 };
^
test.cpp:12:60: error: no matching function for call to ‘std::vector<__gmp_expr<__mpz_struct [1], __mpz_struct [1]> >::vector(<brace-enclosed initializer list>)’
test.cpp:12:60: note: candidates are:
In file included from /usr/lib/gcc/x86_64-pc-cygwin/4.8.3/include/c++/vector:64:0,
from test.cpp:2:
/usr/lib/gcc/x86_64-pc-cygwin/4.8.3/include/c++/bits/stl_vector.h:398:9: note: template<class _InputIterator> std::vector<_Tp, _Alloc>::vector(_InputIterator, _InputIterator, const allocator_type&)
vector(_InputIterator __first, _InputIterator __last,
^
/usr/lib/gcc/x86_64-pc-cygwin/4.8.3/include/c++/bits/stl_vector.h:398:9: note: template argument deduction/substitution failed:
test.cpp:12:60: note: cannot convert ‘1’ (type ‘int’) to type ‘const allocator_type& {aka const std::allocator<__gmp_expr<__mpz_struct [1], __mpz_struct [1]> >&}’
vector<mpz_class> numerator_arr{ 1, -1, 1, -1, 5, -691, 7 };
^
当我尝试使用
mpz_class numerator_arr[] = { 1, -1, 1, -1 }
我试着像这样存储数字
-94598037819122125295227433069493721872702841533066936133385696204311395415197247711
编译器返回这些警告和错误:
test.cpp:29:3: warning: this decimal constant is unsigned only in ISO C90 [enabled by default]
test.cpp:30:4: warning: integer constant is too large for its type [enabled by default]
-94598037819122125295227433069493721872702841533066936133385696204311395415197247711 };
^
test.cpp: In function ‘int main()’:
test.cpp:30:88: error: conversion from ‘__int128 unsigned’ to ‘mpz_class {aka __gmp_expr<__mpz_struct [1], __mpz_struct [1]>}’ is ambiguous
-94598037819122125295227433069493721872702841533066936133385696204311395415197247711 };
^
test.cpp:30:88: note: candidates are:
In file included from test.cpp:2:0:
/usr/include/gmpxx.h:1423:3: note: __gmp_expr<__mpz_struct [1], __mpz_struct [1]>::__gmp_expr(double)
__GMPXX_DEFINE_ARITHMETIC_CONSTRUCTORS
^
/usr/include/gmpxx.h:1423:3: note: __gmp_expr<__mpz_struct [1], __mpz_struct [1]>::__gmp_expr(float)
__GMPXX_DEFINE_ARITHMETIC_CONSTRUCTORS
^
/usr/include/gmpxx.h:1423:3: note: __gmp_expr<__mpz_struct [1], __mpz_struct [1]>::__gmp_expr(long unsigned int)
__GMPXX_DEFINE_ARITHMETIC_CONSTRUCTORS
^
/usr/include/gmpxx.h:1423:3: note: __gmp_expr<__mpz_struct [1], __mpz_struct [1]>::__gmp_expr(long int)
__GMPXX_DEFINE_ARITHMETIC_CONSTRUCTORS
^
/usr/include/gmpxx.h:1423:3: note: __gmp_expr<__mpz_struct [1], __mpz_struct [1]>::__gmp_expr(short unsigned int)
__GMPXX_DEFINE_ARITHMETIC_CONSTRUCTORS
^
/usr/include/gmpxx.h:1423:3: note: __gmp_expr<__mpz_struct [1], __mpz_struct [1]>::__gmp_expr(short int)
__GMPXX_DEFINE_ARITHMETIC_CONSTRUCTORS
^
/usr/include/gmpxx.h:1423:3: note: __gmp_expr<__mpz_struct [1], __mpz_struct [1]>::__gmp_expr(unsigned int)
__GMPXX_DEFINE_ARITHMETIC_CONSTRUCTORS
^
/usr/include/gmpxx.h:1423:3: note: __gmp_expr<__mpz_struct [1], __mpz_struct [1]>::__gmp_expr(int)
__GMPXX_DEFINE_ARITHMETIC_CONSTRUCTORS
^
/usr/include/gmpxx.h:1423:3: note: __gmp_expr<__mpz_struct [1], __mpz_struct [1]>::__gmp_expr(unsigned char)
__GMPXX_DEFINE_ARITHMETIC_CONSTRUCTORS
^
/usr/include/gmpxx.h:1423:3: note: __gmp_expr<__mpz_struct [1], __mpz_struct [1]>::__gmp_expr(signed char)
__GMPXX_DEFINE_ARITHMETIC_CONSTRUCTORS
^
这是我第一次在 GMP 中使用数组。任何帮助将不胜感激。
最佳答案
好吧,总结上面的所有评论,如果您在代码中处理大量数组修改(插入/删除),最好使用 vector<mpz_class>
保存您的 mpz_class 变量。以及您最好使用 mpz_class
的原因而不是 mpz_t
首先,您不必担心跟踪用于变量( mpz_init()/mpz_clear()
)的内存,其次,您编写的代码变得更加清晰,因为许多运算符都映射为 mpz_class
关于错误,您的 vector<mpz_class>
代码导致错误,因为您没有正确实例化变量。可能是你的意思是
mpz_class numerator_arr[] = { 1, -1, 1, -1 };
vector<mpz_class> arr (numerator_arr);
当您尝试将大量数字存储到 mpz_class 中时,您会收到错误消息,因为当您像这样初始化 mpz_class 时:
mpz_class m(-11111111111111111111111111111111111111111111111)
您已经将 huge number 初始化为原始 int 类型。在你的例子中,这个数字被分配为一个无符号的 16 字节 int,因为它太大了,gmp 没有提供任何构造函数来将它变成它的 mpz_class
。结构。您最好将输入参数设为字符串(const char*) 而不是 int。所以会是
mpz_class m("-11111111111111111111111111111111111111111111111")
希望这对您有所帮助。
关于c++ - 如何在 C++ 中定义一个包含 GMP 变量的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26988385/
我有一个类似于以下的结构。 class A { string title; List bItem; } class B { int pric
本地流 和 远程流 两者都是“媒体流列表 ”。 本地流 包含“本地媒体流 ” 对象 但是,远程流 包含“媒体流 ” 对象 为什么差别这么大? 当我使用“本地流 “- 这个对我有用: localVide
我正在尝试将 8 列虚拟变量转换为 8 级排名的一列。 我试图用这个公式来做到这一点: =IF(OR(A1="1");"1";IF(OR(B1="1");"2";IF(OR(C1="1");"3";I
我正在使用面向对象编程在 Python 中创建一个有点复杂的棋盘游戏的实现。 我的问题是,许多这些对象应该能够与其他对象交互,即使它们不包含在其中。 例如Game是一个对象,其中包含PointTrac
有没有办法获取与 contains 语句匹配的最深元素? 基本上,如果我有嵌套的 div,我想要最后一个元素而不是父元素: Needle $("div:contains('Needle')")
出于某种原因,我无法在 Google 上找到答案!但是使用 SQL contains 函数我怎么能告诉它从字符串的开头开始,即我正在寻找等同于的全文 喜欢 'some_term%'。 我知道我可以使用
我正在尝试创建一个正则表达式来匹配具有 3 个或更多元音的字符串。 我试过这个: [aeiou]{3,} 但它仅在元音按顺序排列时才有效。有什么建议吗? 例如: 塞缪尔 -> 有效 琼 -> 无效 S
嘿所以我遇到了这样的情况,我从数据库中拉回一个客户,并通过包含的方式包含所有案例研究 return (from c in db.Clients.Include("CaseStudies")
如果关键字是子字符串,我无法弄清楚为什么这个函数不返回结果。 const string = 'cake'; const substring = 'cak'; console.log(string.in
我正在尝试将包含特定文本字符串的任何元素更改为红色。在我的示例中,我可以将子元素变为蓝色,但是我编写“替换我”行的方式有些不正确;红色不会发生变化。我注意到“contains”方法通常写为 :cont
我想问一下我是否可以要求/包含一个语法错误的文件,如果不能,则require/include返回一个值,这样我就知道所需/包含的文件存在语法错误并且不能被要求/包含? file.php语法错误 inc
我想为所有包含youtube链接的链接添加一个rel。 这就是我正在使用的东西-但它没有用。有任何想法吗? $('a [href:contains(“youtube.com”)]')。attr('re
我正在尝试在 Elasticsearch 中查询。除搜索中出现“/”外,此功能均正常运行。查询如下所示 GET styling_rules/product_line_filters/_search {
我正在开发名为eBookRepository的ASP.NET MVC应用程序,其中包含在线图书。 电子书具有自己的标题,作者等。因此,现在我正在尝试实现搜索机制。我必须使用Elasticsearch作
我已阅读Firebase Documentation并且不明白什么是 .contains()。 以下是文档中 Firebase 数据库的示例规则: { "rules": { "rooms"
我的问题是我可以给出条件[ 'BookTitleMaster.id' => $xtitid, ] 如下所示 $bbookinfs = $this->BookStockin->BookIssue->fi
我需要能够使用 | 检查模式在他们中。例如,对于像“dtest|test”这样的字符串,像 d*|*t 这样的表达式应该返回 true。 我不是正则表达式英雄,所以我只是尝试了一些事情,例如: Reg
我想创建一个正则表达式来不匹配某些单词... 我的字符:var test = "é123rr;and;ià456;or;456543" 我的正则表达式:test.match(\((?!and)(?!o
我在 XSLT 中有一个名为 variable_name 的变量,如果相关产品具有名称为 A 或 B 或两者均为 A & 的属性,我将尝试将其设置为 1 B.
您好,我想让接待员和经理能够查看工作类型和费率并随后进行更新。但是技术人员只能查看不能更新。该图是否有效? 我读到扩展用例是由发起基本用例的参与者发起的。我应该如何区分技术人员只能启动基本案例而不能启
我是一名优秀的程序员,十分优秀!