Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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++希望所有数组都是固定大小的。我无意在创建数组后尝试更改其大小,但我甚至无法创建它,因为我没有用常量初始化它。 这是我尝试使用的代码: int a; cin >> a; const int b = a; int c[b];_C++_Arrays - Fatal编程技术网

是否创建具有非预定义大小的数组? 新到C++(截至昨晚),但我使用了C位。 我试图从一个用户中获取一个变量,并创建一个这样的数组:我遇到的问题是C++希望所有数组都是固定大小的。我无意在创建数组后尝试更改其大小,但我甚至无法创建它,因为我没有用常量初始化它。 这是我尝试使用的代码: int a; cin >> a; const int b = a; int c[b];

是否创建具有非预定义大小的数组? 新到C++(截至昨晚),但我使用了C位。 我试图从一个用户中获取一个变量,并创建一个这样的数组:我遇到的问题是C++希望所有数组都是固定大小的。我无意在创建数组后尝试更改其大小,但我甚至无法创建它,因为我没有用常量初始化它。 这是我尝试使用的代码: int a; cin >> a; const int b = a; int c[b];,c++,arrays,C++,Arrays,我试图回避这个经常发生的问题,但这不起作用。 提出的另一个选项是向量,但这似乎效率低下(因为它们与c#?)中的列表相当)。我不需要改变数组的大小或任何类似的东西。 我是不是漏掉了什么明显的东西 遗憾的是,C++是复杂的。如果没有这本书,你就不可能学好并有效地学习它,因为它将解释所有的基础知识,比如如何使用容器 要回答您的具体问题,std::vector是一条可行之路。这不是低效的。但是是的,它们可以与System.Collections.Generic.Lists进行比较。C++目前没有一个不可

我试图回避这个经常发生的问题,但这不起作用。 提出的另一个选项是向量,但这似乎效率低下(因为它们与c#?)中的列表相当)。我不需要改变数组的大小或任何类似的东西。 我是不是漏掉了什么明显的东西


遗憾的是,C++是复杂的。如果没有这本书,你就不可能学好并有效地学习它,因为它将解释所有的基础知识,比如如何使用容器


要回答您的具体问题,
std::vector
是一条可行之路。这不是低效的。但是是的,它们可以与
System.Collections.Generic.List
s进行比较。C++目前没有一个不可调整的、可变长度的容器,但它不能比:STD::vector < /COD> >更有效地执行。

< P>不幸的是,C++是复杂的。如果没有这本书,你就不可能学好并有效地学习它,因为它将解释所有的基础知识,比如如何使用容器


要回答您的具体问题,
std::vector
是一条可行之路。这不是低效的。但是是的,它们可以与
System.Collections.Generic.List
s进行比较。C++目前没有一个不可调整的可变长度容器,但它不能比:STD::vector < /COD>更有效地执行。

< P>尝试STD::vector,如果你想创建T对象的整块内存块。要设置大小,请使用“保留”和“调整大小”,您可以手动查看差异


或者您可以使用允许动态创建数组的运算符new[],但这样您就必须释放内存,然后使用运算符delete[.

如果您想创建T对象的整块内存块,请尝试std::vector。要设置大小,请使用“保留”和“调整大小”,您可以手动查看差异


或者可以使用new new [],允许创建动态数组,但是这样,您必须使用C++的操作符Dele[]来释放内存。没有这本书,你就无法很好地、有效地学习它,因为它将解释所有的基本原理,比如如何使用容器。我有一本书,但它没有正确地解释这一点(imo)。这个操作在c#中非常简单,我只是想知道有没有一个简单的方法来解决这个问题(见答案)。如果这本书没有解释这一点,那就是一本糟糕的书。不幸的是,大多数C++书籍都非常糟糕(因此我的链接)。这就是说,这在C++中是很容易解决的,但它只是需要一些概念,不幸的是,A远不是非常低效的,而且实际上你提到的语言(C*)在引擎盖下做了几乎相同的事情,而你不知道它(就像在C中几乎所有其他东西一样,把大部分的东西从外部隐藏起来)。C++是复杂的。没有这本书,你就无法很好地、有效地学习它,因为它将解释所有的基本原理,比如如何使用容器。我有一本书,但它没有正确地解释这一点(imo)。这个操作在c#中非常简单,我只是想知道有没有一个简单的方法来解决这个问题(见答案)。如果这本书没有解释这一点,那就是一本糟糕的书。不幸的是,大多数C++书籍都非常糟糕(因此我的链接)。这就是说,这在C++中是很容易解决的,但它只是需要一些概念,不幸的是,A远不是非常低效的,而且实际上你提到的语言(C)在引擎盖下做的事情几乎是不一样的(就像在C中几乎所有其他东西一样,把大部分的东西隐藏在外面的世界里)。效率取决于您如何使用容器。在某些情况下,链表

std::list
优于数组,有时是
std::deque
。但是,与标准c数组相比,它们使用起来更安全;如何在不手动添加5个元素的情况下生成长度为5的向量?或者手动添加元素不是低效的?我的理解是,每次增加大小时,整个内容都需要移动到一个正确的新内存块中size@user3660420创建向量时,可以保留向量的大小。此外,移动是否完成取决于stl实现。手动执行所有操作(使用
new[]
delete[]
)时,仍然存在相同的问题。对于stl容器,您可以使用RAII,这使得清理更加简单。@user3660420。正确。效率取决于您如何使用容器。在某些情况下,链表
std::list
优于数组,有时是
std::deque
。但是,与标准c数组相比,它们使用起来更安全;如何在不手动添加5个元素的情况下生成长度为5的向量?或者手动添加元素不是低效的?我的理解是,每次增加大小时,整个内容都需要移动到一个正确的新内存块中size@user3660420创建向量时,可以保留向量的大小。此外,移动是否完成取决于stl实现。手动执行所有操作(使用
new[]
delete[]
)时,仍然存在相同的问题。有了stl容器,您就有了RAII,这使得清理工作更加简单。@user3660420。