c ++新手(截至昨晚),但我已经使用了c#。
我试图从用户那里获取一个变量并创建一个这样大小的数组:我遇到的问题是c ++希望所有数组都是常量。我无意在创建数组后尝试更改数组的大小,但我似乎甚至无法创建它,因为我还没有用常数来初始化它。
这是我尝试使用的代码:
int a;
cin >> a;
const int b = a;
int c[b];
我试图解决这个不变的问题,但这并不奏效。 提出的另一个选项是向量,但这看起来效率低(因为它们与c#中的列表相当?)。我不需要能够改变阵列的大小或类似的东西。 我错过了一些明显的东西吗?
由于
答案 0 :(得分:4)
不幸的是,C ++很复杂。没有a book,没有办法你可以很好地学习它,这将解释所有的基础知识,例如如何使用容器。
要回答您的具体问题,std::vector
是可行的方法。这不是低效的。但是,是的,它们与System.Collections.Generic.List
相当。 C ++当前没有不可调整大小的可变长度容器,但无论如何它都无法比std::vector
更有效地实现。
答案 1 :(得分:0)
如果要创建T对象的整体内存块,请尝试使用std :: vector。设置尺寸使用"保留"并且"调整大小",您可以手动观看差异。
或者您可以使用operator new [],它允许创建动态数组,但这样您就必须释放内存,之后使用operator delete []。