You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用vector分离数组奇偶元素时push_back未正常生效如何解决?

问题原因

  • 核心问题是代码没有实现数组全量遍历逻辑,仅处理了下标为0的第一个元素。你在if/else分支中调用sort(arr, i+1)仅执行了奇偶判断,没有对返回结果做存储处理,也没有迭代下标变量遍历所有数组元素,因此最终仅第一个元素(值为1,奇数)被存入odd容器,其余元素全部未处理。
  • 辅助判断函数命名为sort存在歧义,容易和STL标准库的排序函数std::sort混淆,建议更名。
  • 动态申请的堆数组arr使用后未执行delete[]释放,存在内存泄漏风险。

修正后的可运行代码

#include <iostream>
#include <vector>

using namespace std;

// 更名避免和std::sort冲突,逻辑保持不变
bool isEven(int num){
    return num % 2 == 0;
}

int main(){
    int n;
    cin >> n;
    int *arr = new int[n];
    for(int i=1 ; i<=n ; i++){
        arr[i-1] = i;
    }
    vector <int> even , odd;
    // 新增循环遍历所有数组元素
    for(int i=0; i<n; i++){
        if(isEven(arr[i])){
            even.push_back(arr[i]);
        }else{
            odd.push_back(arr[i]);
        }
    }
    // 释放动态申请的内存
    delete[] arr;

    cout << "the even numbers are : " << endl;
    for(auto element:even){
        cout << element << " ";
    }
    cout << endl;
    cout << "the odd numbers are : " << endl;
    for(auto element:odd){
        cout << element << " ";
    }
    return 0;
}

内容的提问来源于stack exchange,提问作者Namrata Mundhra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 14:45:10