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

C++ 为什么std::vector和std::valarray初始化构造函数不同?,c++,vector,language-lawyer,c++-standard-library,valarray,C++,Vector,Language Lawyer,C++ Standard Library,Valarray,我刚刚被下面的事情烧死了 如果我想用常量X初始化n元素的std::vector,我会这样做: std::vector<double> v(n, X); 在我看来,这似乎是一个武断的“明白了” 当标准化std::vector和std::valarray时,在决定填充构造函数的参数顺序时,标准委员会是否提供了技术原因或一些设计原理?因为它们来自不同的地方:vector来自STL库,而valarray则不然(我还没有找到它的来源,但似乎与Fortran有很强的联系) 引用比亚恩本人的话:

我刚刚被下面的事情烧死了

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

std::vector<double> v(n, X);
在我看来,这似乎是一个武断的“明白了”


当标准化
std::vector
std::valarray
时,在决定填充构造函数的参数顺序时,标准委员会是否提供了技术原因或一些设计原理?

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

引用比亚恩本人的话:

在大多数情况下,这些组件的工作都在进行中 与其他人的工作隔离。没有整体设计或设计 设计理念。
[…]
基本上,委员会未能包含“委员会设计”,因此 尽管STL反映了清晰的理念和连贯的风格,但大多数 其他部分中的一部分受到影响。每一种都代表着自己的风格和风格 哲学,以及一些(如
字符串
)同时管理以呈现多个

(从“在现实世界中为语言进化:C++ +1991—2006”)


所以我想说的是传统的C++,“事物是它们的方式,为了标准化而改变它们会破坏很多东西,所以让我们单独留下好了。”< > >代码:STAR::ValSuth是容器中的一个外星人,我想如果今天添加的话,很多东西会有所不同。我记得有人解释了一些背景,让我看看能不能找到it@Scheff确切地说,imho很好地解释了为什么
std::valarray
从未像预期的那样有用
std::valarray<double> va(X, n);