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
2
3
4
5
6
7
8
9
10
11
12
13