从向量中高效提取子向量
假设你想提取向量的一部分,创建一个包含元素 X 的新向量Y. 在带有标准库向量的 C 语言中,最直接的方法是使用迭代器:
vector<T>::const_iterator first = myVec.begin() + X; vector<T>::const_iterator last = myVec.begin() + Y + 1; vector<T> newVec(first, last);
此操作的时间复杂度为 O(N),其中 N 是原始向量的大小。但是,需要注意的是,没有一种更有效的方法可以使用向量来实现此目的。
替代 STL 数据类型
如果您需要提取子向量通常,请考虑使用支持更有效的子向量提取的替代 STL 容器。一种选择是双端队列,它允许在两端高效地插入和删除元素:
deque<T> myDeque; deque<T> subDeque(myDeque.begin() + X, myDeque.begin() + Y + 1);
以上是如何高效地从C向量中提取子向量?的详细内容。更多信息请关注PHP中文网其他相关文章!