Solidity 练习:数组替换最后元素

2022-12-29 Web3 Solidity

# 一、题目说明

在保持数组没有任何间隙的同时删除数组元素的另一种方法,是将最后一个元素复制到插槽中以删除,然后删除最后一个元素。

该操作比数组移位更省 gas。与数组移位不同,该操作不会保留元素的顺序。

# 二、任务列表

  • 完成删除 _index 处元素的代码。此代码应将最后一个元素复制到要删除的元素中,然后删除最后一个元素。

# 三、解答代码

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;

contract ArrayReplaceLast {
    uint[] public arr = [1, 2, 3, 4];

    function remove(uint _index) external {
        // 把最后一个元素移动到要删除位置
        arr[_index] = arr[arr.length - 1];
        // 移除最后一个元素
        arr.pop();
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13

# 四、参考资料

Last Updated: 2023-01-28 4:31:25