C++ std::back_inserter 用法與範例

本篇 ShengYu 介紹 C++ std::back_inserter 用法與範例,std::back_inserter是一個標準庫中的函式模板,可以讓你輕鬆地將元素插入到容器的尾部,而不需要事先知道容器的大小。它通常與標準庫中的演算法一起使用,例如std::copy,用於將範圍內的元素複製到容器中。你可以將std::back_inserter傳遞給這些演算法,以便自動將元素插入到容器的尾部。本文將帶你深入探索std::back_inserter的用法,並展示如何與不同的標準庫演算法結合使用。

什麼是 std::back_inserter?

std::back_inserter是C++標準庫中的一個函式模板,它允許將元素插入到容器的尾部,而不需要提前分配內存。這使得在不知道容器大小的情況下,動態地向容器新增元素。

C++ std::back_inserter 基本用法

讓我們從一個簡單的 C++ std::back_inserter 示例開始:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <vector>
#include <algorithm>

int main() {
std::vector<int> vec1 = {1, 2, 3, 4};
std::vector<int> vec2;

std::copy(vec1.begin(), vec1.end(), std::back_inserter(vec2));

// 現在vec2包含與vec1相同的元素
for (int num : vec2) {
std::cout << num << " ";
}

return 0;
}

在這個示例中,std::copyvec1的元素複製到vec2中,而std::back_inserter(vec2)則表示將元素插入到vec2的尾部。結果輸出如下,

1
1 2 3 4

C++ std::back_inserter 其他常見用法

除了與std::copy一起使用之外,std::back_inserter還可以與其他標準庫演算法和容器一起使用。以下是幾種常見的用法:

  1. 使用std::copy_if將符合條件的元素從一個範圍複製到另一個容器中:
    1
    2
    3
    std::vector<int> vec1 = {1, 2, 3, 4, 5};
    std::vector<int> vec2;
    std::copy_if(vec1.begin(), vec1.end(), std::back_inserter(vec2), [](int n) { return n % 2 == 0; });

結果輸出如下,

1
2 4

  1. 使用std::transform對範圍內的元素進行轉換,並將結果插入到另一個容器中:
    1
    2
    3
    std::vector<int> vec1 = {1, 2, 3, 4, 5};
    std::vector<int> vec2;
    std::transform(vec1.begin(), vec1.end(), std::back_inserter(vec2), [](int n) { return n * 2; });

結果輸出如下,

1
2 4 6 8 10

  1. 使用std::generate_n生成特定數量的元素,並將其插入到容器的尾部:
    1
    2
    std::vector<int> vec;
    std::generate_n(std::back_inserter(vec), 5, []() { return rand() % 100; });

結果輸出如下,

1
7 49 73 58 30

這些示例展示了std::back_inserter與不同演算法的結合使用,它使得在不需要事先知道目標容器大小的情況下,能夠方便地將元素插入到容器的尾部。

結語

std::back_inserter是C++中一個極為實用的工具,它為動態插入元素提供了便利的方法。通過與標準庫中的演算法結合使用,你可以更加靈活地處理容器中的數據,並實現各種功能。希望本文能幫助你更好地理解和應用std::back_inserter,並提高你的C++寫程式技能。

以上就是 C++ std::back_inserter 用法與範例介紹,
如果你覺得我的文章寫得不錯、對你有幫助的話記得 Facebook 按讚支持一下!

其它相關文章推薦
C/C++ 新手入門教學懶人包
std::copy 用法與範例
std::string 用法與範例
std::vector 用法與範例
std::sort 用法與範例
std::map 用法與範例