当我需要在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]”
所以我应该用数组替换向量来使我的代码更快,如果是的话我应该怎么做呢?
***我应该用数组替换向量,使我的代码更快***不,你需要一个动态数组,所以使用一个向量。 – drescherjm
'std :: array'的速度优势(及其基于堆栈的对象的大小限制)来自这样一个事实,即std :: array的大小在编译时是已知的,因此它可以避免分配和更重要的是间接的。可能有一个类似std :: array的数据结构的地方,它具有已知的大小上限,但动态大小高达此上限。但是,标准C++库中没有这样的数据结构。 –
'int myArray [N];'是一个VLA。这不是合法的C++,而是一个编译器扩展。无论如何,我怀疑它比矢量更快,它使你的代码只能在支持这种非标准扩展的编译器上工作。 – drescherjm