以下是 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变量来记录符合条件的元素应该存放的位置。遍历数组,如果当前元素的值在minmax之间(包括minmax),则将其存放到arr[index]位置,并将index增加1。最后,将数组的大小缩小为index,即可删除所有值小于min和值大于max的元素。


原文地址: http://www.cveoy.top/t/topic/pbXO 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录