- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在<valarray>
header ,定义了五个类模板:valarray
, slice_array
, gslice_array
, mask_array
和 indirect_array
.
对于 valarray<Type>
对象,任何运算符都会影响所有元素。例如,
int array1[] = {1,2,3};
int array2[] = {4,5,6};
valarray<int> v1(array1, 3);
valarray<int> v2(array2, 3);
valarray<int> v3 = v1 + v2; //v3 has 5, 7 and 9.
这就是一些用户使用 valarray
的原因而不是其他容器,如 vector
,许多可靠的网站都描述了该运营商的行为。
顺便说一句,事实上,在<valarray>
中的其余类模板中也是如此。 ,运算符重载。但是,我还没有找到任何描述运算符(operator)行为的文档。至少在我的环境中,运算符的行为与 valarray
的相同。类模板,但我想获得一些书面证据。
阅读中<valarray>
标题,一句话#include <bits/slice_array.h>
被发现。而在 slice_array.h
header ,我找到了运算符的定义:
/// Assign slice elements to corresponding elements of @a v.
void operator=(const valarray<_Tp>&) const;
/// Multiply slice elements by corresponding elements of @a v.
void operator*=(const valarray<_Tp>&) const;
/// Divide slice elements by corresponding elements of @a v.
void operator/=(const valarray<_Tp>&) const;
/// Modulo slice elements by corresponding elements of @a v.
void operator%=(const valarray<_Tp>&) const;
也许这些可以很受欢迎,但我不明白是什么@a v
方法。 (不过,这只是一个例子,不是证据。)
谁有书面证据?
最佳答案
与任何标准功能一样,这些运算符由 C++ 标准定义。
例如,在 C++14 中:
[C++14: 26.6.5.2]
slice_array
assignment[slice.arr.assign]
void operator=(const valarray<T>&) const;
const slice_array& operator=(const slice_array&) const;
1 These assignment operators have reference semantics, assigning the values of the argument array elements to selected elements of the
valarray<T>
object to which theslice_array
object refers.
[C++14: 26.6.5.3]
slice_array
computed assignment[slice.arr.comp.assign]
void operator*= (const valarray<T>&) const;
void operator/= (const valarray<T>&) const;
void operator%= (const valarray<T>&) const;
void operator+= (const valarray<T>&) const;
void operator-= (const valarray<T>&) const;
void operator^= (const valarray<T>&) const;
void operator&= (const valarray<T>&) const;
void operator|= (const valarray<T>&) const;
void operator<<=(const valarray<T>&) const;
void operator>>=(const valarray<T>&) const;
1 These computed assignments have reference semantics, applying the indicated operation to the elements of the argument array and selected elements of the
valarray<T>
object to which theslice_array
object refers.
另一方面,文档注释与标准无关,是您的特定实现/工具链作者的选择。 @a
几乎可以肯定是 a doxygen directive .
关于c++ - 什么保证了 slice_array 类的运算符的行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49393117/
int input[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; std::valarray test(input, sizeof(input)/sizeof(input
在 header ,定义了五个类模板:valarray , slice_array , gslice_array , mask_array和 indirect_array . 对于 valarray对
All overloads of assignment operators的std::slice_array都是const成员函数,但为什么要这样设计呢? 可能是因为 std::slice_array
我想知道为什么我不能比较some_valarray[first_slice] int main() { //Initialize valarray std::valarray val0{0,
这里有一个代码不能用至少符合 c+++11 的编译器编译(在 godbolt 上试过): #include #include #include class Whatever { public:
我有一个函数接受对 valarray 的 const 引用,我希望能够对数组进行切片并将切片传递给另一个需要 const slice_array 的函数。我知道我可以只使用 operator[] 和一
我是一名优秀的程序员,十分优秀!