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);