簡體   English   中英

使用boost multi_array迭代器在數組元素之間分配

[英]assignment between array elements using boost multi_array iterator

使用gcc 4.8.4在Kubuntu 14.04系統上工作時,我遇到了以下問題:

使用std: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_array operator[]涉及的迭代器是輸入迭代器 ,不需要是可變的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM