C++ 如何创建一个二维数组,其中所有行的大小都不相同,并且用户将指定每个行将具有多少元素?

C++ 如何创建一个二维数组,其中所有行的大小都不相同,并且用户将指定每个行将具有多少元素?,c++,multidimensional-array,C++,Multidimensional Array,目标是分配一个2d整数数组,列数和行数由用户输入。但是在这里,行的大小不能相同,并且用户将指定单个行将包含多少元素。(这是我不理解的部分)然后我们必须通过获取用户输入为数组元素赋值,然后打印值。这就是我到目前为止所想到的。我做错了什么?我需要改变什么 #include<iostream> using namespace std; int main() { int row,col; cout<<"How many rows do you want?

目标是分配一个2d整数数组,列数和行数由用户输入。但是在这里,行的大小不能相同,并且用户将指定单个行将包含多少元素。(这是我不理解的部分)然后我们必须通过获取用户输入为数组元素赋值,然后打印值。这就是我到目前为止所想到的。我做错了什么?我需要改变什么

    #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;
int main(){
int row,col;
库特罗;
库特尔;
int**arr=新int*[行];
对于(int i=0;icout我只会使用嵌套的
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;
    }
}
#包括
#包括
int main(){
int行;
标准::cout>行;
std::vector arr(row);//生成空int向量的向量
对于(int i=0;icol;
对于(int j=0;jstd::cout我只会使用嵌套的
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;
    }
}
#包括
#包括
int main(){
int行;
标准::cout>行;
std::vector arr(row);//生成空int向量的向量
对于(int i=0;icol;
对于(int j=0;jstd::cout尝试使用
std::vector
而不是
T*
指向堆分配内存:
vector
自动分配和删除其数据,正确复制自身,为算法等提供接口。提示:当前代码打印了多少次“您想要多少列?”,需要打印多少次才能提示“用户”指定“各行将包含多少元素”尝试使用
std::vector
而不是指向堆分配内存的
T*
vector
自动分配和删除其数据,正确复制自身,为算法提供接口等。提示:当前代码打印了多少次“您想要多少列?”,需要打印多少次才能提示“用户”指定“各行将包含多少元素”