大佬教程收集整理的这篇文章主要介绍了c – 构建时保留子向量,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
size_t n = 100; std::vector<std::vector<foo>> v(n);
子向量的计数是动态的,但是已知.然而,每个向量中的项目数量是不知道的,但是我有一个估计,所以我想在开始推回它们之前保留子向量.我目前正在做的是:
size_t estimated_size = 1000; for (auto& sub_vector: v){ sub_vector.reserve(estimated_sizE); }
有没有更好的办法?喜欢在建造时做吗?
附:这不是一个选择:
size_t n = 100; size_t estimated_size = 1000; std::vector<std::vector<foo>> v(n,std::vector<foo>(estimated_sizE));
我只想在没有建设的情况下保留,因为foo是昂贵的,被建造两次.
class VectorReserveItr : public std::iterator<std::input_iterator_tag,foo> { size_t i; size_t capacity; public: VectorReserveItr(size_t i,size_t capacity) : i(i),capacity(capacity) {} VectorReserveItr& operator++() { ++i; return *this; } bool operator!=(const VectorReserveItr& rhs) { return i != rhs.i; } std::vector<foo> operator*() { std::vector<foo> ret; ret.reserve(capacity); return ret; } }; std::vector<std::vector<foo>> v(VectorReserveItr(0,1000),VectorReserveItr(100,1000));
但我不会期望它比循环更快,我不认为它也更可读.
以上是大佬教程为你收集整理的c – 构建时保留子向量全部内容,希望文章能够帮你解决c – 构建时保留子向量所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。