我正在开发一个容器,它实现了自己的迭代器,我将它与std::reverse_iterator<>一起使用,以获得反向迭代功能。我可以将反向迭代器分配给rend或rbegin,但是当我尝试访问它的任何功能(例如!=或==)时,我得到的结果是:
1 IntelliSense: more than one operator "!=" matches these operands:
function template "bool std::operator!=(const std::reverse_iterator<_RanIt1>
我正在尝试使用GADT来拥有约束良好的类型,但是在编译过程中一些依赖项是不可能处理的,例如用户输入。让我们考虑以下AVL树定义:
data Zero
data S a
data AVL depth where
Nil :: AVL Zero
LNode :: AVL n -> Int -> AVL (S n) -> AVL (S (S n))
RNode :: AVL (S n) -> Int -> AVL n -> AVL (S (S n))
MNode :: AVL n -> Int -> AVL n -> AVL (
我有以下结构:
template <typename T> struct avl_tree {
T data;
int balance;
struct avl_tree <T> *Link[2];
int (*comp)(T, T);
};
我想做的是在运行时将comp函数指针指向一个有效的函数,然后让struct avl_tree<T>的所有实例能够访问这个函数。
int compare(int a, int b) {
return ( a - b );
}
这样我就可以这样做了吗?
avl_tree<int&