Conflict std::set and NTL::vec_ZZ
Conflict std::set and NTL::vec_ZZ
我正在尝试为NTL库中定义的任意长度整数向量使用std::set,但由于某些原因,它不起作用。它与库定义的ZZ整数完全兼容:
#include <NTL/ZZ.h>
#include <NTL/vec_ZZ.h>
#include <set>
NTL_CLIENT
int main(void){
std::set<ZZ> foo;
foo.insert(to_ZZ(1)); //works without problems
std::set<vec_ZZ> vectorFoo;
vec_ZZ vec;
vectorFoo.insert(vec); //causes compiler to crash
return 0;
}
有人知道为什么第一个插入有效而第二个不有效吗?
std::set<T>
按std::less<T>
排序,默认为bool operator<(T,T)
。ZZ
确实定义了一个合适的operator<
(它们是有序的),但vec_ZZ
没有。事实上,大多数NTL类都没有,甚至连ZZ_p
都没有。因此std::set<ZZ_p>
同样无效。
相关文章:
- 在for循环中使用auto vs decltype(vec.size())来处理字符串的向量
- Omnet++中的.vec和.sca输出有什么区别?
- vec[i][j] 是否转换为 *(vec + i + j)?
- 如何在编译器C++不智能的情况下实现 GLSL vec* 构造语法?
- 在Rcpp(和RcppArmadillo)中,如何检查vec是否包含复数
- 在 NTL 中构造多项式的标准方法是什么?
- c++14 - vec.begin() 和 begin(vec) 之间有什么区别吗?
- 在没有root权限的情况下安装NTL,并在生成文件中修改其构建路径
- 是否可以使用 std::vector<std::any> vec;这将导致异构数据类型
- 在 opencv 上将 vec 类型转换为标量类型
- OpenCV:当将 std::vector 传递给需要 OutputArray 的函数时,vec 包含垃圾
- 为什么在使用 auto&&it=--vec.end(),是 UB 时自动推导左值引用?
- C++ 犰狳 生成给定 vec 或矩阵的索引 uvec,而不循环它
- 使用高级构造函数将阵列转换为Armadillo Vec
- 当使用 std::vector::p ush_back 插入未知数量的元素时,是否应该在每次推送时检查 std::vec
- 使用 std::vector,为什么 &vec[0] 未定义的行为,而 vec.data() 是安全的?
- 如何修复此 OpenCV 错误:断言失败((无符号)i < (无符号)cn) 在 cv::Vec<unsigned char,3>:::运算符 (), 文件
- NTL library GF2X
- 使用GMP安装NTL
- 为什么glm :: vec表示VEC值为工会