在C++中存储不同长度的子数组可以使用动态数组或者向量(vector)来实现。
动态数组是一种可以在运行时调整大小的数组。在C++中,可以使用new运算符来动态分配内存,并使用delete运算符释放内存。以下是一个示例代码:
int main() {
int n;
cout << "请输入子数组的个数:";
cin >> n;
int** subArrays = new int*[n]; // 创建一个指针数组,用于存储子数组的指针
for (int i = 0; i < n; i++) {
int length;
cout << "请输入第" << i+1 << "个子数组的长度:";
cin >> length;
subArrays[i] = new int[length]; // 创建一个长度为length的子数组
cout << "请输入第" << i+1 << "个子数组的元素:";
for (int j = 0; j < length; j++) {
cin >> subArrays[i][j]; // 输入子数组的元素
}
}
// 输出子数组的内容
for (int i = 0; i < n; i++) {
int length = sizeof(subArrays[i]) / sizeof(int); // 获取子数组的长度
cout << "第" << i+1 << "个子数组的内容:";
for (int j = 0; j < length; j++) {
cout << subArrays[i][j] << " ";
}
cout << endl;
}
// 释放内存
for (int i = 0; i < n; i++) {
delete[] subArrays[i];
}
delete[] subArrays;
return 0;
}
向量(vector)是C++标准库中提供的一种动态数组容器。它可以自动调整大小,并提供了一系列方便的成员函数来操作数组。以下是一个使用向量存储不同长度子数组的示例代码:
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n;
cout << "请输入子数组的个数:";
cin >> n;
vector<vector<int>> subArrays; // 创建一个二维向量,用于存储子数组
for (int i = 0; i < n; i++) {
int length;
cout << "请输入第" << i+1 << "个子数组的长度:";
cin >> length;
vector<int> subArray(length); // 创建一个长度为length的子数组
cout << "请输入第" << i+1 << "个子数组的元素:";
for (int j = 0; j < length; j++) {
cin >> subArray[j]; // 输入子数组的元素
}
subArrays.push_back(subArray); // 将子数组添加到二维向量中
}
// 输出子数组的内容
for (int i = 0; i < subArrays.size(); i++) {
cout << "第" << i+1 << "个子数组的内容:";
for (int j = 0; j < subArrays[i].size(); j++) {
cout << subArrays[i][j] << " ";
}
cout << endl;
}
return 0;
}
以上代码示例中,我们使用动态数组和向量分别存储了不同长度的子数组,并演示了如何输入和输出子数组的内容。在实际应用中,可以根据具体需求选择合适的数据结构来存储不同长度的子数组。