为什么std::vector和std::valarray初始化构造函数不同

Why are std::vector and std::valarray initializing constructors different?

本文关键字:std 构造函数 初始化 vector 为什么 valarray      更新时间:2023-10-16

我刚刚被以下内容烧伤。

如果我想用常数X初始化n元素的std::vector,我会这样做:

std::vector<double> v(n, X);

但是,如果我需要用常数X初始化n元素的std::valarray,我需要交换大小和初始化常数:

std::valarray<double> va(X, n);

在我看来,这就像是一个武断的"明白"。

std::vectorstd::valarray标准化时,标准委员会在决定填料建造商参数的顺序时,是否提供了技术原因或一些设计依据?

因为它们不是来自同一个地方:vector来自STL库,而valarray不是(我还没能找到它的来源,但似乎与Fortran有很强的联系(。

引用Bjarne本人的话:

大多数时候,这些组件的工作都在与其他人的工作隔离。没有整体设计或设计理念
[…]
基本上,委员会未能包含"委员会设计",因此尽管STL体现了清晰的理念和连贯的风格其他部件受损。每个都代表自己的风格哲学,和一些(如string(同时管理呈现几个。

(摘自《在现实世界中为现实世界发展语言:C++1991-2006》(

所以我想说,基本原理是传统的C++;事情就是这样,为了标准化而改变它们会破坏很多东西,所以让我们不要管它了"。