理解std::remove 的功能
在C 中,std::remove 演算法對由兩個前向表示的任意序列進行操作迭代器。其目的是重新排列序列中的元素,將不匹配的元素向前移動。與 std::erase 不同,remove 不會從容器中物理刪除元素。相反,它會重新組織它們。
範例
考慮以下程式碼片段:
std::vector<int> a; a.push_back(1); a.push_back(2); std::remove(a.begin(), a.end(), 1); std::vector<int>::iterator iter = a.begin(); std::vector<int>::iterator endIter = a.end(); std::cout << "Using iter...\n"; for (; iter != endIter; ++iter) { std::cout << *iter << "\n"; } std::cout << "Using size...\n"; for (int i = 0; i < a.size(); ++i) { std::cout << a[i] << "\n"; }
輸出將為:
Using iter... 2 2 Using size... 2 2
雖然🎜>輸出將為:
雖然🎜>輸出將為:
雖然🎜>輸出將有效地將元素2向前移動,但向量的大小保持不變為2,因為未初始化的記憶體尚未被刪除。
a.erase(std::remove(a.begin(), a.end(), 1), a.end());
Erase-Remove Idiom
擦除-刪除習慣用法結合了刪除和擦除來物理刪除不需要的元素。程式碼:
將從向量中刪除元素 1 並將其大小減小到 1。
以上是C 函數中的 std::remove 如何實現,std::remove 和 std::erase 有什麼不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!