c++ remove_if如何處理復(fù)雜條件

c++
小樊
92
2024-07-26 13:10:11

在C++中,可以使用lambda表達(dá)式作為remove_if函數(shù)的第三個(gè)參數(shù)來(lái)處理復(fù)雜條件。

例如,如果要?jiǎng)h除一個(gè)vector中所有大于10且為偶數(shù)的元素,可以這樣寫(xiě):

#include <iostream>
#include <vector>
#include <algorithm>

int main() {
    std::vector<int> vec = {1, 5, 10, 15, 20, 25, 30};

    vec.erase(std::remove_if(vec.begin(), vec.end(), [](int i) {
        return i > 10 && i % 2 == 0;
    }), vec.end());

    for (auto& i : vec) {
        std::cout << i << " ";
    }

    return 0;
}

在這個(gè)例子中,lambda表達(dá)式[](int i) { return i > 10 && i % 2 == 0; }定義了一個(gè)復(fù)雜的條件,用于判斷元素是否大于10且為偶數(shù)。remove_if函數(shù)將遍歷vector中的所有元素,調(diào)用lambda表達(dá)式對(duì)每個(gè)元素進(jìn)行判斷,如果返回true,則該元素將被移動(dòng)到vector的末尾,最后erase函數(shù)將這些元素從vector中刪除。

因此,通過(guò)使用lambda表達(dá)式作為remove_if的第三個(gè)參數(shù),可以比較方便地處理復(fù)雜的條件。

0