個人做網(wǎng)站需要注意什么seo 優(yōu)化
C++ lambda表達(dá)式
Lambda表達(dá)式是一種簡潔的方式來創(chuàng)建匿名函數(shù),可以直接在函數(shù)調(diào)用的地方定義,主要用于簡化代碼。
Lambda表達(dá)式的基本語法如下:
[capture](parameters) -> return_type {// function body
};
示例1:基本用法
在這個例子中,lambda表達(dá)式 [](int n) { std::cout << n << " "; } 被傳遞給 std::for_each 用來遍歷并打印 numbers 中的每個元素。
#include <iostream>
#include <vector>
#include <algorithm>int main() {std::vector<int> numbers = {1, 2, 3, 4, 5};// 使用lambda表達(dá)式打印vector中的元素std::for_each(numbers.begin(), numbers.end(), [](int n) {std::cout << n << " ";});std::cout << std::endl;return 0;
}
示例2:捕獲變量
Lambda表達(dá)式可以通過捕獲列表 [capture] 捕獲作用域中的變量。捕獲方式包括按值捕獲和按引用捕獲。
#include <iostream>int main() {int a = 10;int b = 20;// 按值捕獲a和bauto lambda_value_capture = [a, b]() {std::cout << "Value capture: " << a << ", " << b << std::endl;};lambda_value_capture();// 按引用捕獲a和bauto lambda_reference_capture = [&a, &b]() {std::cout << "Reference capture: " << a << ", " << b << std::endl;};lambda_reference_capture();// 修改a和b的值a = 30;b = 40;lambda_value_capture(); // 輸出依舊是10, 20,因為是按值捕獲lambda_reference_capture(); // 輸出是30, 40,因為是按引用捕獲return 0;
}
示例3:參數(shù)和返回值
Lambda表達(dá)式可以接受參數(shù)并返回值,參數(shù)和返回類型的語法與普通函數(shù)類似。
#include <iostream>
#include <functional>int main() {// 帶參數(shù)和返回值的lambda表達(dá)式std::function<int(int, int)> add = [](int x, int y) -> int {return x + y;};int result = add(5, 3);std::cout << "Result: " << result << std::endl; // 輸出 Result: 8return 0;
}
示例4:在STL算法中的應(yīng)用
Lambda表達(dá)式經(jīng)常用于STL算法中,例如 std::sort、std::transform 等。
#include <iostream>
#include <vector>
#include <algorithm>int main() {std::vector<int> numbers = {5, 2, 9, 1, 5, 6};// 使用lambda表達(dá)式排序std::sort(numbers.begin(), numbers.end(), [](int a, int b) {return a < b;});// 打印排序后的vectorstd::for_each(numbers.begin(), numbers.end(), [](int n) {std::cout << n << " ";});std::cout << std::endl; // 輸出 1 2 5 5 6 9return 0;
}
說明
- 捕獲列表 [capture]:指定lambda表達(dá)式如何捕獲外部變量??梢允褂肹=]捕獲所有變量為值,[&]捕獲所有變量為引用。
- 參數(shù)列表 (parameters):與普通函數(shù)參數(shù)列表一樣。
- 返回類型 -> return_type:指定lambda表達(dá)式的返回類型,可省略。
- 函數(shù)體 { // function body }:定義lambda表達(dá)式的具體實現(xiàn)。