boost::multi_array reshape()函数的复杂性
Complexity of boost::multi_array reshape() function
boost::multi_array
reshape()函数的复杂度是多少?我希望它是O(1),但我在文档中找不到这个信息。这个图书馆的文献资料实际上相当稀少。
我问这个问题的原因是,我想使用一个循环来迭代一个multi_array对象(我不关心数组索引)。该库似乎没有提供使用单个迭代器迭代数组的方法。因此,作为一种变通方法,我想首先沿单个维度重塑数组(其他维度设置为1)。然后我可以使用一个循环来遍历数组。然而,我不确定reshape()
操作的效率有多高
因此,我的第二个问题是:有没有一种简单的方法可以使用单个循环迭代multi-array
对象的所有元素?
以下是multi_array_ref.hpp
文件中reshape
函数的实现。
template <typename SizeList>
void reshape(const SizeList& extents) {
boost::function_requires<
CollectionConcept<SizeList> >();
BOOST_ASSERT(num_elements_ ==
std::accumulate(extents.begin(),extents.end(),
size_type(1),std::multiplies<size_type>()));
std::copy(extents.begin(),extents.end(),extent_list_.begin());
this->compute_strides(stride_list_,extent_list_,storage_);
origin_offset_ =
this->calculate_origin_offset(stride_list_,extent_list_,
storage_,index_base_list_);
}
看起来函数只是对extents
对象中与数组大小相关联的元素重新编制索引。函数在extends中的元素数量上是线性的。但我认为它的复杂性是数组中元素总数不变的。
相关文章:
- "error: no matching function for call to"构造函数错误
- 什么时候调用组成单元对象的析构函数
- 继承函数的重载解析
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- C++模板来检查友元函数的存在
- 递归函数计算序列中的平方和(并输出过程)
- 对RValue对象调用的LValue ref限定成员函数
- 关联容器的下界复杂性:成员函数与非成员函数
- C++ 字符串类擦除成员函数的时空复杂性
- 递归函数 c++ 的复杂性
- 这个递归函数有什么作用?运行时的复杂性是多少?
- 从 long 转换C++位集构造函数的复杂性是多少?
- Github的CodeFactor抱怨简单函数的复杂性
- Find() 函数的复杂性是什么?
- 函数不受主内存约束的函数所需的复杂性是什么?
- C :最佳复杂性函数
- std::string::substr成员函数的复杂性是什么?
- 计算图中路径的递归函数的复杂性
- boost::multi_array reshape()函数的复杂性
- c++继承中函数调用的复杂性