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

如何创建可检测内部是否存在重复数值的vector?

检测C++ Vector中的重复数值方法

针对你需要检测vector内是否存在重复值的需求,这里给你几个适合新手理解的实现方法:

方法一:双重循环遍历(最基础直观)

这是最容易理解的方法,通过两层循环逐个对比元素:

#include <iostream>
#include <vector>

int main() {
    std::vector<int> A = {2, 4, 2, 7};
    bool hasDuplicate = false;

    // 外层循环遍历每个元素
    for (int i = 0; i < A.size(); ++i) {
        // 内层循环对比当前元素之后的所有元素
        for (int j = i + 1; j < A.size(); ++j) {
            if (A[i] == A[j]) {
                hasDuplicate = true;
                break; // 找到重复就跳出内层循环
            }
        }
        if (hasDuplicate) break; // 找到重复就跳出外层循环
    }

    if (hasDuplicate) {
        std::cout << "存在重复数值" << std::endl;
    } else {
        std::cout << "不存在重复数值" << std::endl;
    }

    return 0;
}

思路:每个元素和它后面的所有元素逐一对比,只要找到一对相等的,就判定存在重复。

方法二:排序后检查相邻元素

先对vector排序,重复元素会被排在一起,再遍历检查相邻元素是否相等:

#include <iostream>
#include <vector>
#include <algorithm> // 用于sort函数

int main() {
    std::vector<int> A = {2, 4, 2, 7};
    bool hasDuplicate = false;

    // 对vector进行排序
    std::sort(A.begin(), A.end());

    // 遍历检查相邻元素
    for (int i = 0; i < A.size() - 1; ++i) {
        if (A[i] == A[i + 1]) {
            hasDuplicate = true;
            break;
        }
    }

    if (hasDuplicate) {
        std::cout << "存在重复数值" << std::endl;
    } else {
        std::cout << "不存在重复数值" << std::endl;
    }

    return 0;
}

思路:排序后重复元素会相邻,只需要一次遍历就能检测到重复,效率比双重循环高。

方法三:利用Set自动去重特性

Set容器不允许存储重复元素,把vector的元素存入Set后,对比两者的大小:

#include <iostream>
#include <vector>
#include <unordered_set> // 用于unordered_set

int main() {
    std::vector<int> A = {2, 4, 2, 7};
    std::unordered_set<int> s(A.begin(), A.end());

    if (s.size() != A.size()) {
        std::cout << "存在重复数值" << std::endl;
    } else {
        std::cout << "不存在重复数值" << std::endl;
    }

    return 0;
}

思路:如果vector有重复元素,存入Set后元素数量会减少,所以只要两者大小不同,就说明存在重复。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 20:45:23