如何创建一个所有行大小不同的 2D 数组,并且用户将指定每行将有多少个元素?

How to create a 2D array where all of the rows are not the same size, and the user will specify how many elements the individual rows will have?

本文关键字:用户 元素 多少 数组 一个 创建 何创建 2D      更新时间:2023-10-16

目标是分配一个二维整数数组,列数和行数由用户输入给出。 但在这里,行的大小不得相同用户将指定各个行将具有多少个元素。(这是我不明白的部分(然后,我们必须通过获取用户输入为数组元素分配值,然后打印值。这就是我到目前为止想出的。我做错了什么,我需要改变什么?

#include<iostream>
using namespace std;
int main() {
int row,col;
cout<<"How many rows do you want? ";
cin>>row;
cout<<"How many columns do you want? ";
cin>>col;
int** arr = new int*[row];
for(int i = 0; i < row; i++){
arr[i] = new int[col];
}
for(int i = 0; i < row; ++i){
for(int j = 0; j < col; j++){
cout<<"R "<<i+1<<" C "<<j+1<<" value: ";
cin>>arr[i][j];
}
}
cout<<"Output array: n";
for(int i = 0; i < row; ++i){
for(int j = 0; j < col; j++){
cout<<arr[i][j]<<"t";
}
cout<<endl;
}
}

谢谢!

我只会使用嵌套std::vector。此外,由于您希望每行的大小不同,因此您必须询问用户每一行:

#include <iostream>
#include <vector>
int main() {
int row;
std::cout << "How many rows do you want? ";
std::cin >> row;
std::vector<std::vector<int>> arr(row); // makes a vector of empty int vectors
for (int i = 0; i < row; ++i) {
int col;
std::cout << "How many columns do you want? ";
std::cin >> col;
for (int j = 0; j < col; j++) {
std::cout << "R " << i + 1 << " C " << j + 1 << " value: ";
int value;
std::cin >> value;
arr[i].push_back(value);
}
}
std::cout << "Output array: n";
for (auto &v : arr) {
for (int &i : v) {
std::cout << i << "t";
}
std::cout << std::endl;
}
}