c++ - 将一个 slice_array 分配给另一个 slice_array 是否正确?

标签 c++ c++14 llvm valarray

int input[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
std::valarray<int> test(input, sizeof(input)/sizeof(input[0]));

const std::slice_array<int> s1 = test[std::slice(1, 3, 2)];
const std::slice_array<int> s2 = test[std::slice(0, 3, 1)];

// is it correct to do this?
s1 = s2;

std::valarray<int> temp(s1);
printf("temp[0]=%d  temp[1]=%d temp[2]=%d\n", temp[0], temp[1], temp[2]);

运行代码,我得到:

test: 0 1 2 3 4 5 6 7 8 9 

s1:     1   3   5

s2:   0 1 2 

s1=s2

s1:     0   0   2     --> 0 1 2 is expected for s1

test: 0 0 2 0 4 5 6 7 8 9 

我只是想知道 s1 = s2 使用是否正确?

如果使用正确,那么可以说这是我旧版本的 LLVM C++ 库的错误吗?

最佳答案

是的,你可以分配一个std::slice_array给另一个 operator=

Assigns the selected elements from sl_arr to the referred to elements of *this.

此外,这里没有错误,s1 = [0, 0, 2] 的结果是正确的。

在你的情况下:

test { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }
s1        ^     ^     ^
s2     ^  ^  ^

注意 s2 引用的第一个元素是 0,它被分配给 s1 的第一个元素, 这是 test 的第二个元素.

这个新分配的值是 s2 的第二个值它被分配给 s1 的第二个值, 等等。

在作业结束时,test成为

test { 0, 0, 2, 0, 4, 2, 6, 7, 8, 9 }

关于c++ - 将一个 slice_array 分配给另一个 slice_array 是否正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63838160/

相关文章:

linker - 链接器是否更喜欢 .so 文件而不是 .a 文件?

c++ - 河马模拟 : mocking just a part of class

c++ - 判断系统是否可以实例化QApplication(GUI支持)

c++ - 将变量插入 vector , vector 中该点的值会随着变量的改变而改变

c++ - 类的 index_sequence 用法

windows - 为什么 Windows 上的 llvm-config 不为 clang++.exe 发出正确的参数?

c++ - 是否可以根据另一个硬编码数组的数据自动生成硬编码数组?

c++ - SFINAE 断言()代码不编译

c++ - 变量模板的编译器问题

llvm - 为什么 LLVM SIMD 不向量化此代码?