我正在执行c ++赋值,允许用户一个个地输入数字,然后将其存储在数组中,并动态增加此数组的容量(乘以2)。基本上是使用一些基本代码来模仿“向量”。
#include<iostream>
using namespace std;
struct myArray {
const size_t initial_size = 1;
const size_t growth_factor = 2;
size_t length = 0;
size_t capacity = initial_size;
int *v; // vector
};
int main() {
int x;
myArray numbers;
while (true) {
cout << "Please input a numebr (program terminated once a -ve number is entered)" << endl;
cin >> x;
if (x < 0)
break;
if (numbers.length == numbers.capacity) {
int *temp = new int[numbers.capacity *= numbers.growth_factor];
for (size_t i = 0; i < numbers.length; ++i)
temp[i] = numbers.v[i];
delete[] numbers.v;
numbers.v = temp;
}
numbers.v[numbers.length++] = x;
}
for (size_t i = 0; i < numbers.length; ++i)
cout << numbers.v[i] << ",";
cout << endl;
return 0;
}
这是我得到的错误,我的第33行代码旁边几乎没有红叉:Numbers.v [numbers.length ++] = x;当我将鼠标悬停在红叉上时,就会出现以下错误:picture of error message
Exception thrown: read access violation.
numbers.v was 0x111011101110111. occurred
通过查看我的代码行,我只是将int值“ x”分配给数组“ numbers.v”的第一个元素
我已经尝试寻找其他解决方案,但是我发现其他每个人的问题都更加严重,并且此读访问冲突错误似乎是由于在不同情况下的不同原因。]
我正在执行c ++赋值,允许用户一个个地输入数字,然后将其存储在数组中,并动态增加此数组的容量(乘以2)。基本上是使用...
[执行时: