如何基于位置打印vector中与另一数组对应的元素,无需额外数据结构
实现方案
你已经将每个数字的拆分结果、对应编码、位置信息都存在了info结构体实例中,直接通过两层遍历现有结构即可完成打印,不需要引入额外数据结构,具体实现如下:
前置修正说明
你原有代码存在两处会导致编译失败的问题,建议先调整:
struct info定义末尾缺少C++强制要求的分号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_
相关产品推荐
相关产品推荐

