[英]Why are std::vector and std::valarray initializing constructors different?
我刚刚被下面的东西烧了。
如果我想用常数X
初始化n
元素的std::vector
,我这样做:
std::vector<double> v(n, X);
但是,如果我需要用常量X
初始化n
元素的std::valarray
,我需要交换大小和初始化常量:
std::valarray<double> va(X, n);
在我看来,这似乎是一个任意的“陷阱”。
当std::vector
和std::valarray
被标准化时,在决定填充构造函数参数的顺序时,标准委员会是否提供了技术原因或一些设计理由?
因为它们不是来自同一个地方: vector
来自 STL 库,而valarray
不是(我无法找到它的来源,但似乎与 Fortran 有很强的联系)。
引用 Bjarne 自己的话:
大多数时候,这些组件中的每一个的工作都是独立于其他组件的。 没有整体设计或设计理念。
[...]
基本上,委员会未能包含“委员会设计”,因此尽管 STL 反映了清晰的理念和连贯的风格,但大多数其他组件都受到了影响。 每个都代表着自己的风格和哲学,有些(例如string
)可以同时呈现几个。
(来自“在现实世界中发展一种语言:C++ 1991-2006”。)
所以我想说,基本原理是传统的 C++ 之一,“事情就是这样,为了标准化而改变它们会破坏很多事情,所以让我们别管它”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.