one*_*ree 19 c++ vector c++-standard-library language-lawyer valarray
我刚刚被以下内容灼伤。
如果我要初始化std::vector的n一个常量元素X我这样做:
std::vector<double> v(n, X);
Run Code Online (Sandbox Code Playgroud)
但是,如果我需要初始化std::valarray的n一个常量元素X我需要交换的大小和初始化常数:
std::valarray<double> va(X, n);
Run Code Online (Sandbox Code Playgroud)
在我看来,这就像一个任意的“陷阱”。
是否有技术原因或者决定有关的填充构造函数的参数的顺序时,当由标准委员会提供的一些设计原理std::vector,并std::valarray进行了规范?
mol*_*ilo 21
因为它们不是来自同一个地方:vector来自 STL 库,并且valarray不是(我一直无法找出它来自哪里,但似乎与 Fortran 有很强的联系)。
引用 Bjarne 本人的话:
大多数情况下,这些组件中的每一个的工作都是独立于其他组件的工作进行的。没有整体设计或设计理念。
[...]
基本上,委员会未能包含“委员会设计”,因此虽然 STL 反映了清晰的理念和连贯的风格,但大多数其他组件都受到了影响。每一种都代表了自己的风格和哲学,有些(例如string)设法同时呈现了几种。
(摘自“在现实世界中发展语言:C++ 1991-2006”。)
所以我想说的是传统 C++ 的基本原理,“事情就是这样,为了标准化而改变它们会破坏很多东西,所以让我们先放过自己吧”。
| 归档时间: |
|
| 查看次数: |
530 次 |
| 最近记录: |