C++ 线性表删除元素:高效移除超出范围值
以下是 C++ 代码实现,用于删除所有值小于 min 和值大于 max 的元素,并保持顺序存储和相对位置不变:
#include <iostream>
#include <vector>
// 删除所有值小于min和值大于max的元素
void deleteOutOfRangeElements(std::vector<int>& arr, int min, int max) {
int n = arr.size();
int index = 0;
for (int i = 0; i < n; i++) {
if (arr[i] >= min && arr[i] <= max) {
arr[index] = arr[i];
index++;
}
}
arr.resize(index);
}
int main() {
std::vector<int> arr = {1, 5, 3, 7, 9, 2, 6, 4, 8};
int min = 3;
int max = 7;
// 删除所有值小于min和值大于max的元素
deleteOutOfRangeElements(arr, min, max);
// 输出删除后的元素
for (int i = 0; i < arr.size(); i++) {
std::cout << arr[i] << ' ';
}
std::cout << std::endl;
return 0;
}
输出结果为:
5 3 7 6 4
在上述代码中,我们使用了一个index变量来记录符合条件的元素应该存放的位置。遍历数组,如果当前元素的值在min和max之间(包括min和max),则将其存放到arr[index]位置,并将index增加1。最后,将数组的大小缩小为index,即可删除所有值小于min和值大于max的元素。
原文地址: http://www.cveoy.top/t/topic/pbXO 著作权归作者所有。请勿转载和采集!