[英]Erase element from std array
是否可以從std array
刪除iterator指向的特定元素? 我知道std vector
提供了erase()
方法。 可以為std array
實現相同的邏輯嗎?
根據定義, std::array
具有固定的大小,因此它不能提供任何會改變大小的方法。
但是,您仍然可以使用刪除算法之一 。 這些算法實際上不會刪除任何元素,而只會將它們移動到序列的末尾,以使所有“已刪除”的元素都落在您范圍內的某個邊界之后。 該邊界作為迭代器返回。
例:
std::array<int, 4> arr = {0, 1, 2, 3};
auto newEnd = std::remove(arr.begin(), arr.end(), 2);
for (auto iter = arr.begin(); iter != newEnd; ++iter)
std::cout << *iter << "\n";
在此處查看一個實時示例。
但是,再次重要的是要了解什么都不會從arr
刪除。 只是arr.begin()
和newEnd
給定的范圍不再包含2
。 對於std::vector
您現在可以使用此newEnd
迭代器,以實際上刪除其后面的所有內容,從而更改矢量的大小。 對於std::array
您不能執行此操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.