91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

c++ filt如何處理多種過濾條件

c++
小樊
81
2024-11-16 14:23:43
欄目: 編程語言

在C++中,我們可以使用函數對象(也稱為仿函數)和lambda表達式來處理多種過濾條件。這里有一個示例,展示了如何使用這些技術來過濾一個整數向量,根據多個條件(例如,大于10且為偶數)。

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

bool is_even(int num) {
    return num % 2 == 0;
}

bool is_greater_than_ten(int num) {
    return num > 10;
}

int main() {
    std::vector<int> numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};

    // 使用函數對象進行過濾
    std::vector<int> filtered_numbers1;
    std::copy_if(numbers.begin(), numbers.end(), std::back_inserter(filtered_numbers1), is_even);
    std::copy_if(filtered_numbers1.begin(), filtered_numbers1.end(), std::back_inserter(filtered_numbers1), is_greater_than_ten);

    // 使用lambda表達式進行過濾
    std::vector<int> filtered_numbers2;
    std::copy_if(numbers.begin(), numbers.end(), std::back_inserter(filtered_numbers2), [](int num) {
        return num % 2 == 0 && num > 10;
    });

    // 輸出過濾后的結果
    std::cout << "Filtered numbers using function objects:" << std::endl;
    for (int num : filtered_numbers1) {
        std::cout << num << " ";
    }
    std::cout << std::endl;

    std::cout << "Filtered numbers using lambda expressions:" << std::endl;
    for (int num : filtered_numbers2) {
        std::cout << num << " ";
    }
    std::cout << std::endl;

    return 0;
}

在這個示例中,我們首先定義了兩個簡單的函數對象is_evenis_greater_than_ten,分別用于檢查一個整數是否為偶數以及是否大于10。然后,我們使用std::copy_if算法和這些函數對象來創建一個過濾后的向量filtered_numbers1

接下來,我們展示了如何使用lambda表達式來實現相同的過濾條件。Lambda表達式是一種更簡潔的方式來定義函數對象,它允許我們在不創建單獨的函數對象的情況下定義一個簡單的匿名函數。在這個例子中,我們使用了一個lambda表達式來檢查一個整數是否既是偶數又大于10,并將滿足條件的整數添加到filtered_numbers2向量中。

最后,我們輸出過濾后的結果,可以看到兩種方法都得到了相同的結果:12和14。

0
宁夏| 台山市| 元氏县| 封丘县| 阳新县| 双鸭山市| 澜沧| 安阳市| 库伦旗| 平乐县| 延寿县| 安仁县| 抚宁县| 黎城县| 海安县| 金川县| 富川| 新平| 滦平县| 西乌珠穆沁旗| 孝昌县| 平塘县| 金塔县| 天水市| 凉城县| 维西| 郁南县| 冷水江市| 扬州市| 敖汉旗| 左贡县| 呈贡县| 望江县| 夏河县| 上杭县| 青铜峡市| 夏邑县| 河池市| 固原市| 大田县| 罗江县|