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

C++新手求助:随机整数存储、去重及查询实现

C++实现随机三元组存储、去重与查询功能

以下是满足你需求的完整代码,包含多行存储、A值去重和查询功能:

#include <iostream>
#include <vector>
#include <unordered_set>
#include <random>
#include <limits>

// 封装每组A、B、C数据的结构体
struct Data {
    int a;
    int b;
    int c;
};

int main() {
    // 初始化随机数生成器(C++11及以上推荐用法)
    std::random_device rd;
    std::mt19937 gen(rd());
    std::uniform_int_distribution<int> dist(1, 100); // 生成1-100的随机整数

    std::vector<Data> data_list; // 存储多组A、B、C数据
    std::unordered_set<int> existing_a; // 记录已存在的A值,用于去重

    // 生成10组去重后的随机数据(可根据需求调整数量)
    const int target_count = 10;
    while (data_list.size() < target_count) {
        int a = dist(gen);
        int b = dist(gen);
        int c = dist(gen);

        // 检查A值是否已存在,不存在则存储
        if (existing_a.find(a) == existing_a.end()) {
            data_list.push_back({a, b, c});
            existing_a.insert(a);
        }
    }

    // 输出多行表格形式的数据
    std::cout << "存储的多行数据:\n";
    std::cout << "A\tB\tC\n";
    for (const auto& item : data_list) {
        std::cout << item.a << "\t" << item.b << "\t" << item.c << "\n";
    }

    // 查询功能:根据输入的A值查找对应B、C
    std::cout << "\n请输入要查询的A值:";
    int query_a;
    std::cin >> query_a;

    // 处理非整数输入的情况
    if (!std::cin) {
        std::cin.clear();
        std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
        std::cout << "输入无效,请输入整数\n";
        return 1;
    }

    bool found = false;
    for (const auto& item : data_list) {
        if (item.a == query_a) {
            std::cout << "找到匹配数据:B=" << item.b << ",C=" << item.c << "\n";
            found = true;
            break;
        }
    }

    if (!found) {
        std::cout << "未找到A值为" << query_a << "的数据\n";
    }

    return 0;
}

功能实现说明

  • 多行存储:通过std::vector<Data>存储自定义结构体实例,每个结构体对应一行A、B、C数据,遍历vector即可直接输出多行表格格式。
  • A值去重:使用std::unordered_set<int>存储已出现的A值,每次生成新A后通过find()快速判断是否重复,避免存储重复A的行。
  • 查询功能:读取用户输入的整数后,遍历存储的所有数据,匹配到对应A值时输出B、C,未匹配则给出提示。

代码优化点说明

  • 替换了老旧的rand()函数,使用C++11标准的随机数库,生成的随机数分布更均匀。
  • 用结构体封装数据,比单纯用vector<int>更清晰,便于后续维护和扩展。
  • 加入了基础的输入错误处理,避免用户输入非整数导致程序异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 13:07:20