Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/128.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 当我没有';我不知道c/c+中的数组大小+;?_C++ - Fatal编程技术网

C++ 当我没有';我不知道c/c+中的数组大小+;?

C++ 当我没有';我不知道c/c+中的数组大小+;?,c++,C++,我想要像20,30,10,40..这样的输入。我想对他们做手术。请注意,没有终端字符或数字 int i = 0; while (scanf("%d", &arr[i]) == 1) i++; 上面的代码可以使用,但它是一个无限循环 > P>因为你把答案标注为C++,下面是常见的习惯用法: int i = 0; std::vector<int> numbers; while (std::cin >> i) { numbers.push_back(i);

我想要像
20,30,10,40..
这样的输入。我想对他们做手术。请注意,没有终端字符或数字

int i = 0;
while (scanf("%d", &arr[i]) == 1)
    i++;

上面的代码可以使用,但它是一个无限循环

> P>因为你把答案标注为C++,下面是常见的习惯用法:

int i = 0;
std::vector<int> numbers;
while (std::cin >> i)
{
  numbers.push_back(i);
}

没有这样的语言c/c++。C或C++ C++…………和无限的看起来像这样的数组需要无限的,这是不现实的。不同的语言意味着非常不同的解决方案。例如,在C语言中,您必须动态分配一个数组。在C++中,你有<代码> STD::vector < /COD>,它处理内存分配和分配。我认为这不能回答问题。我想是这样。不过,可能需要对终止条件进行一点扩展。@Quentin:OP没有指定输入的终止条件。@ThomasMatthews在您的代码中,我的意思是--它在
std::basic_ios::operator bool
的文档中,但总结一下也无妨:)@TarikulIslam您的输入可能有一些终止条件。否则,只需输入一个
while
/
sleep
循环,并等待宇宙的热消亡。
size_t  capacity = 4;
int * p_array = new int [capacity];
int value = 0;
size_t quantity = 0;
while (std::cin >> value)
{
  if (quantity >= capacity)
  {
    capacity *= 2;
    int * p_larger_array = new int[capacity];
    std::copy(p_array, p_array + quantity, p_larger_array);
    delete [] p_array;
    p_array = p_larger_array;
  }
  p_array[quantity] = value;
}