首頁 > 後端開發 > C++ > 如何有效地從 C std::vector 中提取子向量?

如何有效地從 C std::vector 中提取子向量?

Linda Hamilton
發布: 2024-12-04 09:24:11
原創
345 人瀏覽過

How to Efficiently Extract a Subvector from a C   std::vector?

從向量中提取子向量

在 C 中,std::vector 是儲存連續元素序列的容器。如果您需要從一個大向量中提取元素子集來建立一個新向量該怎麼辦?

要建構一個由元素 X 到 Y 組成的新向量,可以使用以下步驟:

  1. 取得引用第一個和最後一個元素的迭代器子向量:
vector<T>::const_iterator first = myVec.begin() + X;
vector<T>::const_iterator last = myVec.begin() + Y + 1;
登入後複製
  1. 使用這些迭代器建構一個新向量:
vector<T> newVec(first, last);
登入後複製

這個方法需要O(N) 時間來建構新向量向量,但對於大向量來說是有效的。如果需要建立原始向量中其他元素的副本,可以使用std::copy :

vector<T> newVec(Y - X + 1);
std::copy(first, last, newVec.begin());
登入後複製

如果原始向量非常大,而你只需要其中的一部分,則可以考慮使用std::deque 而不是std::vector。 std::deque 支援兩端高效率插入和刪除,更適合動態子向量擷取。

以上是如何有效地從 C std::vector 中提取子向量?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板