人們普遍認爲,從std::vector
完全刪除所需項目的好方法是erase-remove idiom。STL「擦除 - 刪除」成語:爲什麼不「調整大小 - 刪除」?
正如上面的鏈接注意(如本發佈之日起),在代碼中擦除刪除成語是這樣的:
int main()
{
// initialises a vector that holds the numbers from 0-9.
std::vector<int> v = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
// erase-remove idiom to completely eliminate the desired items from the vector
v.erase(std::remove(std::begin(v), std::end(v), 5), std::end(v));
}
我想知道resize-remove
成語是否功能和性能等同於erase-remove
習語。或者,也許我錯過了一些明顯的東西?
以下是resize-remove
成語等同於上述erase-remove
成語嗎?
int main()
{
std::vector<int> v = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
// Is this "resize-remove" approach equivalent to the "erase-remove" idiom?
v.resize(std::remove(std::begin(v), std::end(v), 5) - v.begin());
}
「resize-remove」是 - 根據定義 - 不是「成語」,因爲該短語不被其他人使用...... –
@TonyD這本身就是一個非常強烈的理由,喜歡刪除成語。 –