使用可变数量int
s创建长整数的首选方法是什么?
我的猜测是这样的:
expr mk_add(expr_vector args) {
vector<Z3_ast> arr;
for (int i = 0; i < (int)args.size(); i++)
arr.push_back(args[i]);
return to_expr(args.ctx(), Z3_mk_add(args.ctx(), arr.size(), &arr[0]));
}
这是正确的吗?
答案 0 :(得分:0)
是的,这看起来是正确的。请记住要小心Z3_ast
个对象,因为它们的引用计数不会自动更新(此处to_expr
应该注意这一点。)
另一种保留在C ++ API中并且不需要笨拙翻译的解决方案是:
expr mk_add(expr_vector args) {
expr r = args[0];
for (int i = 1; i < (int)args.size(); i++)
r = to_expr(args.ctx(), r + args[i]);
return r;
}