是否可以使用一系列智能指针来自动通过其索引更新其值



在C 中,有没有一种方法来编写一系列智能指针,以自动在数组中使用其索引更新尖的值?尖头值的成员可以存储索引,类似于侵入性重新数。

我有兴趣编写具有可更新优先级的堆。如果堆中的值始终被更新以指向其内部存储内部的索引,而无需在堆算法中的特殊知识,则在更改值的优先级时,很容易遵循该链接回到堆中。知道更改项目的位置,可以快速恢复堆不变。

这是我对基本实现的尝试。我希望将Container的参考参考全局阵列进行参数化,而不会使实例大于一个指针,这将是好的,可以提高安全性。如果它也是随机访问迭代器,它将更有用。

class Contained {
    public:
        uintptr_t index;
};
class Container {
    public:
        Contained *value;
    Container& operator=(Container& other);
};
Container foobars[4];
Container& Container::operator=(Container& other) {
    this->value = other.value;
    this->value->index = ((uintptr_t)this - (uintptr_t)foobars) / sizeof(this->value);
    return *this;
}

相关内容

  • 没有找到相关文章

最新更新