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

如何将算法生成的数值存入数组并用于校验用户输入

问题原因分析

  • 第一种写法中,total_events_by_year 是循环内部的局部变量,每次循环迭代都会重新创建、赋值,迭代结束后立即销毁,不会保留历史数值,自然无法作为一组独立值使用。
  • 第二种写法中,你在循环内部每次都定义了长度为1的局部数组,直接输出数组名时,数组名会隐式转换为指向首元素的指针,因此输出的是内存地址;且该数组同样每次迭代后销毁,无法存储所有生成的数值。

实现方案

优先使用C++标准库的std::vector动态容器存储数值,无需提前手动指定长度,使用更灵活:

  1. 首先引入对应头文件:
#include <vector>
  1. 在循环外部声明容器,循环内将生成的数值插入容器:
// 循环外声明存储所有有效事件的vector
std::vector<int> valid_events;
for (int e = 1; e <= max_event_number; e++) {
    int total_events_by_year = first_event + (e * event_occurence);
    // 将生成的数值插入容器末尾
    valid_events.push_back(total_events_by_year);
}
  1. 后续校验用户输入时,直接遍历容器判断即可,示例:
int user_input;
std::cin >> user_input;
bool is_valid = false;
for (int event : valid_events) {
    if (event == user_input) {
        is_valid = true;
        break;
    }
}
if (is_valid) {
    std::cout << "输入为有效事件年份" << std::endl;
} else {
    std::cout << "输入为无效值" << std::endl;
}

如果一定要用原生数组实现,需要提前在循环外申请长度为max_event_number的数组,循环内给对应下标赋值:

// 提前申请足够长度的数组
int* valid_events = new int[max_event_number];
for (int e = 1; e <= max_event_number; e++) {
    // 注意数组下标从0开始
    valid_events[e-1] = first_event + (e * event_occurence);
}
// 使用完后需要手动释放内存避免泄漏
delete[] valid_events;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 19:39:01