如何创建一个所有行大小不同的 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?
目标是分配一个二维整数数组,列数和行数由用户输入给出。 但在这里,行的大小不得相同,用户将指定各个行将具有多少个元素。(这是我不明白的部分(然后,我们必须通过获取用户输入为数组元素分配值,然后打印值。这就是我到目前为止想出的。我做错了什么,我需要改变什么?
#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;
}
}
相关文章:
- C++如何通过用户输入删除列表元素
- 如何创建一个所有行大小不同的 2D 数组,并且用户将指定每行将有多少个元素?
- 为什么用户定义的函数不按照给定的顺序对相同长度的元素进行排序?
- 如何计算字符串中用户输入元素的出现次数?
- 在数组中显示第一个元素用户输入
- 如何让用户C++输入少于 10 个元素的数组
- 如何通过引用对用户定义对象的类型集 (STL) 的数组元素进行增强迭代?
- 与 C++ 中一行中的用户输入数组元素相关的问题
- 如何找到具有用户定义谓词的向量的最大元素
- 数组元素的用户输入
- 如何使用用户输入正确修改 2D 数组中的字符数组元素?专门用于电影院座位
- 如何在int数组中查找用户定义元素的数量
- 基于用户输入(选择向上,向下,左或右)中的3x3数组中的元素
- 用户将元素输入到 2D 矢量 c++ 中
- 将向量的元素强制转换为用户定义的类型
- 在用户定义结构的向量中查找最小和最大元素的索引
- 我如何让一个数组来存储用户在 C 中使用 do-while 循环输入的最多 10 个元素
- 使用用户定义的动态容器对元素进行排序
- LinkedList构造函数,允许用户输入列表中的元素
- 复制STL:删除元素、用户定义函数作为参数和事件队列