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

如何初始化队列的队列?嵌套队列结构初始化失败求助

问题分析与解决方案

核心问题点

  1. 数据结构误解:profile_lru_q_t是固定长度的int数组(长度为PROFILE_NUM),并非队列,因此没有push_back方法。你试图给数组调用队列的专属方法,属于语法错误。
  2. 队列空访问错误:vc_lru_queue_inst是队列类型,初始状态为空。直接通过vc_lru_queue_inst[i]访问队列的第i个元素,会因队列中无对应元素导致越界错误。

正确初始化代码

方式1:先填充队列,再逐个赋值

// 第一步:给外层队列添加PROFILE_NUM个数组元素
for (int i=0; i<PROFILE_NUM; i++) begin
    profile_lru_q_t temp_arr;
    vc_lru_queue_inst.push_back(temp_arr);
end

// 第二步:给队列中的每个数组赋值
for (int i=0; i<PROFILE_NUM; i++) begin
    for (int j=0; j<SDP_VC_NUM; j++) begin
        // 确保SDP_VC_NUM ≤ PROFILE_NUM,避免数组越界
        vc_lru_queue_inst[i][j] = SDP_VC_NUM - 1 - j;
    end
end

方式2:边创建数组边赋值(更高效)

for (int i=0; i<PROFILE_NUM; i++) begin
    profile_lru_q_t temp_arr;
    // 先给临时数组完成赋值
    for (int j=0; j<SDP_VC_NUM; j++) begin
        temp_arr[j] = SDP_VC_NUM - 1 - j;
    end
    // 将赋值后的数组加入队列
    vc_lru_queue_inst.push_back(temp_arr);
end

注意事项

  • 必须保证SDP_VC_NUM的数值不大于PROFILE_NUM,否则会触发数组越界错误。
  • 队列的push_back方法仅适用于外层的vc_lru_queue_inst,内层的数组只能通过索引直接赋值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 04:07:09