C++从标准输入初始化一个大小的数组

当我需要在C++中存储多个相同类型的值时,我可以使用一个向量或数组。到目前为止,我主要只使用向量,但我听说数组处理速度更快(读取和写入值)。如果这是真的,我想知道如何用标准输入读取的大小来创建一个数组。我目前使用的是这样的:C++从标准输入初始化一个大小的数组

int N; 

cin >> N;

vector<int> myVector(N);

我曾尝试:

int N; 

cin >> N;

array<int, N> myArray;

,但是这给了我一个错误,因为:
错误:的“N”的值不是一个常量表达式可用
我也曾尝试:

int N; 

cin >> N;

int myArray[N];

这将编译,但是当我试着问这个ARRA的大小Y(myArray.size())遍历它与一个for循环然后我得到一个错误:
错误:会员“尺寸”在“myArray的”,请求其是非类型的“INT [N]”

所以我应该用数组替换向量来使我的代码更快,如果是的话我应该怎么做呢?

回答:

N应该在编译时知道。因此,如果您想要使用array进行I/O操作,则应指定允许读取的最大数量int。另外,您应该自行跟踪读取整数的数量。

So should I replace vectors with arrays to make my code faster and if so the how should I do it?

不,因为operator>>将是您的情况的瓶颈。并且当int s的数字未知时,与vector一起工作就好了。

回答:

数组不是C++中的对象,所以没有.size()函数。你应该让另一个变量保持它的大小。

int* array = new int[size]; 

就是这样。但是,你应该有充足的理由来做这件事,因为它更安全,更易于使用。使用数组

后,必须将其删除:

delete [] array; 

,并记住你永远可以使用矢量:: data()函数得到一个向量数组

以上是 C++从标准输入初始化一个大小的数组 的全部内容, 来源链接: utcz.com/qa/265605.html

回到顶部