如何动态初始化vlaue元素并将其分配给数组 我想用C++中的元素来分配动态数组元素的值。 我使用下面的代码来赋值 int *missedlst; for(int i=0;i<10;i++){ missedlst = new int; missedlst[i] = i; }

如何动态初始化vlaue元素并将其分配给数组 我想用C++中的元素来分配动态数组元素的值。 我使用下面的代码来赋值 int *missedlst; for(int i=0;i<10;i++){ missedlst = new int; missedlst[i] = i; },c++,arrays,dynamic-arrays,C++,Arrays,Dynamic Arrays,如果打印值,则仅正确显示最后一个值。其余的值不是:程序显示一些垃圾值。 请帮助我在循环中逐个元素分配值。您的代码正按照您的指示执行 int *missedlst; // New pointer for(int i=0;i<10;i++){ // Loop 10 times missedlst = new int; // Change what the pointer points to missedlst[i] = i; // This make

如果打印值,则仅正确显示最后一个值。其余的值不是:程序显示一些垃圾值。
请帮助我在循环中逐个元素分配值。

您的代码正按照您的指示执行

int *missedlst;          // New pointer
for(int i=0;i<10;i++){   // Loop 10 times
    missedlst = new int; // Change what the pointer points to
    missedlst[i] = i;    // This makes no sense, you don't have an array
}
您需要创建一个新的整数数组,然后分配值

int size = 10;                   // A size that is easily changed.
int* missedList = new int[size]; // New array of size size
for(int i = 0; i < size; ++i){   // loop size times
    missedList[i] = i;           // Assign the values
}

// Do stuff with your missedList

// Delete the object.
delete[] missedList;

在当前代码中,您分配了十个不同的数组,每次只分配一个int,但是您写入这个单元素数组的第i个元素,在其他地方导致i为零时除外

要使您当前的代码正常工作,您需要重写is,例如

int* missedLst = new int[10];  // Create an array of ten integers
for (int i = 0; i < 10; ++i)
    missedLst[i] = i;  // Set the i'th element to the value of i
动态创建每个元素:

std::vector<int> missedLst;  // Declare a vector of integers, size zero
for (int i = 0; i < 10; ++i)
    missedLst.push_back(i);  // Add the value of i at the end

但是代码中没有动态数组。我想你首先需要弄清楚什么是动态数组,以及如何制作动态数组。每当你想到动态数组时,你就应该下一步思考。你记下这个是为了你的写作质量。实际上,我的场景是什么,我不想给数组指定固定的大小。每当我想向数组中添加新数据时,它的大小都应该增加。@NaveenKumar,那么正如前面提到的,您需要一个向量。
std::vector<int> missedLst;  // Declare a vector of integers, size zero
for (int i = 0; i < 10; ++i)
    missedLst.push_back(i);  // Add the value of i at the end
std::vector<int> missedLst(10);  // Declare a vector of ten integers
std::iota(std::begin(missedLst), std::end(missedLst), 0);