gpt4 book ai didi

c++ - 调整动态数组大小时保留用户输入值的问题

转载 作者:太空宇宙 更新时间:2023-11-04 04:13:29 25 4
gpt4 key购买 nike

这是我尝试创建一个动态数组,该数组在用户为数组预分配数据后调整大小。我使用第二个索引/计数器来获取原始计数器的值。

最具体地说,如何用用户输入的值替换计算机中的随机值?

#include <iostream>
#include <cstring>
#include <cstdlib>
using namespace std;

int main()
{
int size;
cout <`enter code here`< "Enter the size of the array: ";
cin >> size;
if (size <= 0) {
cout << "Array size must be > 0" << endl;
exit(0);
}
int *arr;
arr = new int[size];

int num = 0;
int idx = 0, idx2 = 0;

while (num != -1)
{
cout << "Enter a value to place into an array or -1 to exit: ";
cin >> num;
if (num == -1)
{
break;
}
else if (idx < size)
{
arr[idx++] = num;
}
else
{
idx2 = idx * 2;
int *newArr = new int[size];
memcpy(newArr, arr, size * sizeof(int));
delete [] arr;
newArr[idx++] = num;
arr = newArr;

/*
int* temp = new int[length + added];
memcpy(temp, array, length * sizeof(int));
memcpy(temp + length, added_array, added * sizeof(int));
delete[] array;
array = temp;
*/
}

}

for(int x = 0; x < idx; x++)
{
cout <<arr[x] << endl;
}

cout << endl << "Reshaped Array of Size: "<< idx << endl;
return 0;
}

具体来说,我对大小为 2 的数组的输出错误地显示了我输入的值(2、3、4、5、6、66、55):

3
4
268848517
6
1397644077
55

Reshaped Array of Size: 6
Program ended with exit code: 0

最佳答案

从您的代码,

        else
{
idx2 = idx * 2;
int *newArr = new int[size]; <<<<<<<<<<<< bug
memcpy(newArr, arr, size * sizeof(int)); <<<<<<<<<<<<
delete [] arr;
newArr[idx++] = num;
arr = newArr;

有一个错误。您正在创建具有相同“大小”的 int[]。它应该是“idx2”。

+ memcpy() 的拷贝大小应相应更改(例如 idx)

关于c++ - 调整动态数组大小时保留用户输入值的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54527585/

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