簡體   English   中英

從標准數組中擦除元素

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM