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

溫馨提示×

C++中如何使用copy_if進行條件復制

c++
小樊
84
2024-09-25 01:19:23
欄目: 編程語言

std::copy_if 是 C++ 標準庫中的一個算法,它用于從一個輸入范圍復制滿足特定條件的元素到另一個輸出范圍。其基本語法如下:

template< class InputIt, class OutputIt, class UnaryPredicate >
OutputIt copy_if( InputIt first, InputIt last, OutputIt d_first, UnaryPredicate p );

這里,InputItOutputIt 是迭代器類型,表示輸入和輸出范圍;UnaryPredicate 是一個一元謂詞,即接受單個參數的函數或函數對象,用于定義復制條件。

下面是一個使用 std::copy_if 的示例,將一個 std::vector 中所有大于 5 的元素復制到另一個 std::vector 中:

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

int main() {
    std::vector<int> src = {1, 6, 3, 8, 2, 10};
    std::vector<int> dest;

    // 預分配足夠的空間以提高性能
    dest.reserve(src.size());

    // 使用 std::copy_if 復制大于 5 的元素
    std::copy_if(src.begin(), src.end(), std::back_inserter(dest), [](int x) { return x > 5; });

    // 輸出結果
    for (int num : dest) {
        std::cout << num << ' ';
    }

    return 0;
}

在這個示例中,我們使用了 lambda 表達式 [](int x) { return x > 5; } 作為謂詞,它定義了復制條件為“元素值大于 5”。std::back_inserter(dest) 用于將復制的元素插入到 dest 的末尾。注意,我們還使用了 dest.reserve() 來預分配足夠的空間以提高性能,因為 std::back_inserter 會導致多次內存分配。

0
夏邑县| 斗六市| 元阳县| 永丰县| 临澧县| 高密市| 自贡市| 阳信县| 筠连县| 浮梁县| 台中县| 凤台县| 泾源县| 南开区| 开封县| 和田市| 区。| 吉林省| 衡东县| 营口市| 上饶县| 尉氏县| 桑植县| 云和县| 盘锦市| 邵武市| 牡丹江市| 磴口县| 翁牛特旗| 嘉黎县| 云阳县| 南京市| 喀喇| 湘乡市| 大城县| 临泽县| 宜兴市| 神池县| 宣汉县| 香港| 久治县|