[英]std::vector::erase vs “swap and pop”
從向量中刪除元素的“正常”方式如下:
vec.erase(vec.begin() + index);
但從理論上說,這樣做更快:
if (vec.size() > 1)
{
std::iter_swap(vec.begin() + index, vec.end() - 1);
vec.pop_back();
}
else
{
vec.clear();
}
有沒有理由不使用后者?
第二種情況不保留向量中元素的順序。 如果這是一個有序的向量或者順序很重要那么你剛剛在第二種情況下破壞了第一種情況會使訂單保持原樣。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.