中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

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
山东| 安徽省| 汝南县| 肇源县| 民权县| 鄄城县| 泗水县| 闸北区| 九台市| 青神县| 荆门市| 枣强县| 自治县| 白玉县| 巴林右旗| 巫溪县| 安国市| 信丰县| 大姚县| 久治县| 莱州市| 开平市| 礼泉县| 得荣县| 正安县| 浠水县| 武穴市| 平遥县| 叶城县| 潢川县| 齐齐哈尔市| 大宁县| 金昌市| 桑日县| 三亚市| 炉霍县| 昌乐县| 竹溪县| 城固县| 抚远县| 尉犁县|