从向量中提取子向量的最佳方法?

新手上路,请多包涵

假设我有一个大小为 Nstd::vector (我们称之为 myVec )。构造一个由元素 X 到 Y 的副本组成的新向量的最简单方法是什么,其中 0 <= X <= Y <= N-1?例如, myVec [100000]myVec [100999] 在大小为 150000 的向量中。

如果这不能用向量有效地完成,我应该使用另一种 STL 数据类型吗?

原文由 An̲̳̳drew 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 526
2 个回答
vector<T>::const_iterator first = myVec.begin() + 100000;
vector<T>::const_iterator last = myVec.begin() + 101000;
vector<T> newVec(first, last);

构造新向量是一个 O(N) 操作,但实际上没有更好的方法。

原文由 Greg Rogers 发布,翻译遵循 CC BY-SA 2.5 许可协议

vector::assign 可能是另一种解决方案

// note: size1 < src.size() && size2 < src.size()
std::vector<int> sub1(size1), sub2(size2);
sub1.assign(src.begin(), src.begin() + size1);
sub2.assign(src.begin(), src.begin() + size2);

原文由 tangmr 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏