c++ - 'int' 的问题

标签 c++ arrays multidimensional-array user-input

我是编程新手,所以我想编写一个代码,让我输入一个二维数组(在我的例子中是一个矩阵),然后打印它。

#include <iostream>
using namespace std;

void printArray( const int *array, int count ) 
    { 
       for ( int i = 0; i < count; i++ ) 
          cout << array[ i ] << " "; 

       cout << endl; 
    }

int main () {
int n;
cout<<"Please enter the length of your matrix : "<<endl;
cin>>n;
int * y=new int [n];
for (int w = 0; w <= n-1; w++ ) {

    y[w] = new int [n];
    cout<<"Insert the elements ";

            for (int z = 0; z <= n-1; z++)
            {
                cin >>y [w][z];
            }   
}

printArray(y, n);

}

但是我收到诸如“从‘int*’到‘int’的无效转换”和“数组下标的无效类型 int[int]”之类的错误。您能否检查我的代码并指出我的缺陷?

谢谢

最佳答案

您声明了 y作为int*这只是一维的。您需要声明 y作为int**因为它是二维的。

您的代码无法编译的原因是 int* y指向一个单个内存块(这是一个整数数组,换句话说,一堆int秒)。 y[w]是其中之一int s 在这个数组中所以 y[w] = new int[n]编译失败,因为您试图分配 int*int .

改变 yint**意味着 y可以指向 int* 的数组秒。由于每个 int*可以指向 int 的数组,您将得到一个二维数组。

带有 int** 的 10x10 矩阵的示例代码:

int** iShouldUseStdVector = new int*[10]; // allocate 10 int* <--
for (int i = 0; i < 10; i++)
{
    iShouldUseStdVector[i] = new int[10]; // allocate 10 int <--
    for (int k = 0; k < 10; k++)
    {
        iShouldUseStdVector[i][k] = k;
    }
}

带有 std::vector 的 10x10 矩阵的示例代码:

std::vector<std::vector<int>> thisIsEasy;
for (int i = 0; i < 10; i++)
{
    thisIsEasy.push_back(std::vector<int>());
    for (int k = 0; k < 10; k++)
    {
        thisIsEasy[i].push_back(k);
    }
}

我建议使用 std::vector<std::vector<int>> y;相反,因为它通过在您想要添加更多元素时方便地增长并在其被破坏时释放内存来为您处理内存。

关于c++ - 'int' 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11725844/

相关文章:

php - 将目录结构转换为关联数组

javascript - 基于字符串变量将二维数组项添加到新数组

c++ - 是否有比使用欧几里得算法更好的获取gcd的方法

javascript - 用 JavaScript 解决这个看似简单的数组循环难题

c - 初始化二维数组的函数

c++ - 这是 C++ 中带有指针的数组的良好使用/代码吗?

Perl Foreach 通过多维数组?

c++ - While 循环在 C++ 中执行得太早

c++ - VC++6显示中文

C++,通过指针传递泛型数组,继承,错误: no operator which takes a right-hand operand