23映射迭代
// SPDX-License-Identifier: MIT
pragma solidity 0.8.18;
contract IterableMapping{
mapping (address=>uint) public balance;
mapping (address=>bool) public inserted;//记录某个地址是否存在于映射中
address[] public keys;//记录存在的地址
function set(address _key, uint _val) external {
balance[_key]=_val;
if(inserted[_key]){
inserted[_key]=true;
keys.push(_key);
}
}
function getSize() external view returns(uint){
return keys.length;
}
function first() external view returns (uint){
return balance[keys[0]];
}
function last()external view returns (uint){
return balance[keys[keys.length-1]];
}
function get(uint _i) external view returns (uint){
return balance[keys[_i]];
}
}