如何在c ++中创建动态数组,在执行时决定它的大小?

时间:2018-02-08 17:10:57

标签: c++

**指我发现下面的解决方案,但仍然用户必须输入多少位数

  

他/她将进入。例如,如果用户输入4位数代码然后输入数组   大小应自动为4. **

int* a = NULL;   // Pointer to int, initialize to nothing.
int n;           // Size needed for array
cin >> n;        // Read in the size
a = new int[n];  // Allocate n ints and save ptr in a.
for (int i=0; i<n; i++) {
    a[i] = 0;    // Initialize all elements to zero.
}
. . .  // Use a as a normal array
delete [] a;  // When done, free memory pointed to by a.
a = NULL;     // Clear a to prevent using invalid memory reference.

1 个答案:

答案 0 :(得分:1)

虽然你的问题有点不清楚,但这就是我带走的东西。用户必须保持输入数字,并假设用户输入4位数,然后应创建4个整数的数组。要模仿这个,一个很好的选择是使用std::vector,如下所示:

std::vector<int> a;
for (int x; std::cin >> x;)
{
    a.push_back(x); // push_back adds a new element to the vector.
}

这大大简化了代码,并阻止您手动处理指针。

如果您的目标是直接读取要从中提取数字的整数,则可以执行以下操作:

int input = 0;
std::cin >> input;
std::string inputString = std::to_string(input);

std::vector<int> a;

for (const auto& digit : inputString)
{ 
    a.push_back(std::atoi(digit)); // Convert and add the digit to the vector
}