在编写C++时候,我想用function写一个递归函数,该函数名字为modify,代码如下
struct Node {
Node *l = nullptr, *r = nullptr;
int val = 0;
Node() {}
};
class NumArray {
public:
Node *tree = nullptr;
void build(int l, int r, vector<int> &nums, Node *&node) {
if (node == nullptr) node = new Node();
if (l == r) {
node->val = nums[l];
return;
}
int m = l + r >> 1;
build(l, m, nums, node->l);
build(m + 1, r, nums, node->r);
pushUp(node);
}
inline void pushUp(Node *&node) {
node->val = node->l->val + node->r->val;
}
NumArray(vector<int> nums) {
build(0, nums.size() - 1, nums, tree);
}
void update(int index, int val) {
// 错误代码在此处
function<void(int, int, Node*)> modify = [&](int l, int r, Node *&node) {
if (l == r && l == index) {
node->val = val;
return;
}
int m = l + r >> 1;
modify(l, m, node->l);
modify(m + 1, r, node->r);
};
}
int sumRange(int left, int right) {
}
};
Clion提醒我modify函数是一个不可行的转换
我贴下错误提示
然后我定位错误原因,只要把参数Node去除,错误提示去除,我想可能是我function中的Node参数的语法写错了,因为Node*是一个结构体,我就想,它是不是有自己专属的写法。所以请大家告诉我真真的格式。