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

如何基于位置打印vector中与另一数组对应的元素,无需额外数据结构

实现方案

你已经将每个数字的拆分结果、对应编码、位置信息都存在了info结构体实例中,直接通过两层遍历现有结构即可完成打印,不需要引入额外数据结构,具体实现如下:


前置修正说明

你原有代码存在两处会导致编译失败的问题,建议先调整:

  1. struct info定义末尾缺少C++强制要求的分号
  2. main函数中数组名和结构体名重名,建议将数组名改为info_arr

打印代码实现

在你完成拆分、赋值的逻辑后,添加以下代码即可输出预期结果:

#include <iostream>
#include <vector>
#include <string>
using namespace std;

// 修正后的结构体定义
struct info{
    int num;
    int position;
    vector<int> vDigits;
    vector<string> vCode;
}; // 补充结构体定义末尾的分号

int main(){
    info info_arr[2]; // 修改数组名避免和结构体名重名
    info_arr[0].num = 1234;
    info_arr[1].num = 5678;

    /* 你原有拆分、赋值逻辑,已完成vDigits、position、vCode的赋值 */

    // 新增打印逻辑
    int arr_size = sizeof(info_arr) / sizeof(info_arr[0]);
    for (int i = 0; i < arr_size; i++) {
        // 同一info实例下vDigits和vCode下标一一对应,直接按索引取值即可
        int digit_count = info_arr[i].vDigits.size();
        for (int j = 0; j < digit_count; j++) {
            cout << "pos: " << info_arr[i].position 
                 << ", digit: " << info_arr[i].vDigits[j] 
                 << ", code: \"" << info_arr[i].vCode[j] << "\"" 
                 << endl;
        }
    }
    return 0;
}

注意事项

如果你的数字拆分函数是按低位到高位存入vDigits(比如1234拆分后存储顺序为4、3、2、1),只需要将内层循环改为从digit_count - 1倒序遍历到0即可得到高位在前的输出效果。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 20:54:07