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

如何简单删除vector中的重复int值,不使用指针等复杂操作?

原代码错误分析
  • 无效判断:temp 本身就是通过 duplicatedVector.at(i) 赋值得到的,后续判断 temp == duplicatedVector.at(i) 永远为真,没有任何实际作用
  • 计数器逻辑错误:counter 变量定义在for循环内部,每次循环都会被重置为0,所以计数器最多只能累计到1,永远触发不了 counter > 1 的判断条件
  • 核心去重逻辑缺失:你没有判断当前遍历到的元素是否已经出现过,也没有符合需求的入队逻辑,现有逻辑和「保留元素第一次出现、删除后续重复项」的要求完全不匹配
简单实现方案

不需要用到指针、迭代器等复杂语法,仅用基础循环和布尔变量即可实现,核心逻辑是:遍历原数组的每个元素,先检查该元素是否已经被存入去重数组,如果没有就加入,已存在则直接跳过。
示例代码如下:

for(int i = 0; i < duplicatedVector.size(); i++) {
    int current = duplicatedVector.at(i);
    // 标记当前元素是否已经存在于去重数组中
    bool alreadyExist = false;
    // 遍历去重数组检查重复
    for(int j = 0; j < deduplicatedVector.size(); j++) {
        if(deduplicatedVector.at(j) == current) {
            alreadyExist = true;
            break;
        }
    }
    // 仅从未出现过的元素才加入去重数组
    if(!alreadyExist) {
        deduplicatedVector.push_back(current);
    }
}

执行后deduplicatedVector就会得到你预期的1、2、4结果,且元素顺序和原数组第一次出现的顺序完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 14:09:00