gpt4 book ai didi

c++ - 错误 : Cannot bind 'std::istream {aka std::basic_istream}' lvalue to 'std::basic_istream&&'

转载 作者:行者123 更新时间:2023-11-30 05:02:20 25 4
gpt4 key购买 nike

我从用户那里获取数组大小的输入,然后是它的元素。

在下面的代码中,第一个 for 循环中的 cin>>A[i] 给我一个错误。

从类似这个问题的其他问题来看,这是一个简单的操作错误,脚本类似于我见过的三维工作脚本。 new 是否默认创建一个 3 维数组,这意味着我也需要定义列?如果没有,我会在哪里缺少运算符(operator)?

int** A;
int s;
cin >> s;
A = new int*[s];

for(int i=0;i<s;i++)
{
A[i]=new int[s];
cout<< "Enter value: ";
cin>>A[i];
}

cout<< "Array:\n";
for(int j=0;j<s;j++)
{
cout << A[j] << " ";
}

最佳答案

A[]是一个 int*指针,不是 int值(value)。

没有operator>>可以读取 int值变成 int*指针。由于您想阅读 int值,你必须读入 int变量,所以更改 A[i]在你的第一个循环中 *A[i]相反:

cin >> *A[i];

您需要对 A[j] 执行相同的操作在第二个循环中:

cout << *A[j] << " ";

这是因为没有operator<<写一个int来自 int* 的值指针,但有一个 operator<<可以写入 void* 持有的内存地址的值指针,和 int*可隐式转换为 void* .

别忘了 delete[]完成后的数组:

int s;
cin >> s;

int** A = new int*[s];
for(int i = 0; i < s; ++i)
A[i] = new int[s];

for(int i = 0; i < s; ++i)
{
cout << "Enter value: ";
cin >> *A[i];
}

cout << "Array:\n";
for(int j = 0; j < s; ++j)
cout << *A[j] << " ";

for(int j = 0; j < s; ++j)
delete[] A[j];
delete[] A;

也就是说,当 s > 1 时,您正在为第二维浪费内存。 ,因为您只填写并使用第一列并忽略其他列。您显示的代码实际上只需要一个一维数组:

int s;
cin >> s;

int* A = new int[s];

for(int i = 0; i < s; ++i)
{
cout << "Enter value: ";
cin >> A[i];
}

cout << "Array:\n";
for(int j = 0; j < s; ++j)
cout << A[j] << " ";

delete[] A;

如果你真的想要一个二维数组,试试这样的东西:

int rows, columns;
cin >> rows;
cin >> columns;

int** A = new int*[rows];
for(int i = 0; i < rows; ++i)
A[i] = new int[columns];

for(int i = 0; i < rows; ++i)
{
for(int j = 0; j < columns; ++j)
{
cout << "Enter value for (" << i << "," << j << "): ";
cin >> A[i][j];
}
}

cout << "Array:\n";
for(int i = 0; i < rows; ++i)
{
for(int j = 0; j < columns; ++j)
cout << A[i][j] << " ";
cout << endl;
}

for(int i = 0; i < rows; ++i)
delete A[i];
delete[] A;

话虽这么说,你真的应该使用 std::vector而不是 new[]直接。

关于c++ - 错误 : Cannot bind 'std::istream {aka std::basic_istream<char>}' lvalue to 'std::basic_istream<char>&&' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49931734/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com