Ethereum HashSet数据结构的稳固性

Ethereum HashSet数据结构的稳固性,ethereum,solidity,Ethereum,Solidity,是否有任何方法可以实现一个稳定的集合,以检查元素是否存在,O(1)平均值?我一直在考虑使用一个没有值的映射对象,这比使用数组和迭代来查找元素快吗?是的,从速度的角度看,使用映射更好。对于我们来说,最接近于一个集合的实体是一个映射和一个数组。但是,当您想要删除一个元素时,迭代的代价会很高 映射示例 mapping (address => bool) yourMapping; // maps address (key) to boolean (value) 以身作则 contract Con

是否有任何方法可以实现一个稳定的集合,以检查元素是否存在,O(1)平均值?我一直在考虑使用一个没有值的映射对象,这比使用数组和迭代来查找元素快吗?

是的,从速度的角度看,使用映射更好。对于我们来说,最接近于一个集合的实体是一个映射和一个数组。但是,当您想要删除一个元素时,迭代的代价会很高

映射示例

mapping (address => bool) yourMapping; // maps address (key) to boolean (value)
以身作则

contract Contract {

    struct Set {
        uint[] values;
        mapping (uint => bool) is_in;
    }

    Set my_set;

    function add(uint a) public {
         if (!my_set.is_in[a]) {
             my_set.values.push(a);
             my_set.is_in[a] = true;
         }
    }
}