gpt4 book ai didi

c++ - 使用 boost multi_array 迭代器在数组元素之间赋值

转载 作者:行者123 更新时间:2023-11-30 03:45:40 25 4
gpt4 key购买 nike

在使用 gcc 4.8.4 的 Kubuntu 14.04 系统上我遇到了以下问题:

使用 std:vector,我可以通过迭代器在 vector 元素之间分配:

std::vector<float> v ;
v.push_back(0.0) ;
v.push_back(1.0) ;
auto vv = v.begin() ;
vv[0] = vv[1] ;
assert ( v[0] == v[1] ) ;

使用 boost multi_array,这失败了:

typedef boost::multi_array<float, 1> array_type; 
boost::array<array_type::index, 1> shape = {{ 2 }};
array_type a(shape) ;
a[0] = 0.0 ;
a[1] = 1.0 ;
auto aa = a.begin() ;
aa[0] = aa[1] ;
assert ( a[0] == a[1] ) ; // fails, a[0] is unmodified

我可以使用不同的习语来解决这个问题

aa[0] = *(aa+1) ;

但是我想与 multi_array 一起使用的代码是使用无效类型的赋值编写的。我错过了什么?

最佳答案

原因是 boost::multi_arrayoperator[] 中涉及的迭代器是一个 input iterator ,它不需要是可变的。

关于c++ - 使用 boost multi_array 迭代器在数组元素之间赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34588024/

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