gpt4 book ai didi

c++ - 添加std::valarray的大小不同,操作数顺序也不同

转载 作者:行者123 更新时间:2023-12-02 10:15:32 25 4
gpt4 key购买 nike

std::valarray的添加具有不同的大小,具有不同的操作数顺序。

代码如下:

#include <iostream>
#include <valarray>
using namespace std;

int main() {
std::valarray<float> v0{3.f, 0.f};
std::valarray<float> v1{0.f};
std::valarray<float> v2 = v0 + v1;
std::valarray<float> v3 = v1 + v0;
cout << v2.size() << endl; // 2
cout << v3.size() << endl; // 1
}

编译器:
g++ (Ubuntu 8.4.0-1ubuntu1~18.04) 8.4.0
clang version 9.0.0-2~ubuntu18.04.2 (tags/RELEASE_900/final)

最佳答案

operator+()不执行两个std::valarray<float>对象的串联,

std::valarray<float> v2 = v0 + v1;

在这里,由于 v1的大小为1,它将 v1中的唯一值添加到 v0中的两个元素中,因此大小保持为2。
std::valarray<float> v2 = v1 + v0;

但是在这里, v1的大小为1,它将第一个元素3.f添加到 v1中的唯一元素中,而 v0的第二个值被忽略。
通常会发生这种情况,但是仍未定义对两个 valarray进行二进制操作的行为。

关于c++ - 添加std::valarray的大小不同,操作数顺序也不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62110985/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com