Terdapat tiga cara untuk menangkap ungkapan lambda pembolehubah luaran dalam C++: Tangkap mengikut nilai: Buat salinan pembolehubah. Tangkap melalui rujukan: Dapatkan rujukan berubah-ubah. Tangkap mengikut nilai dan rujukan serentak: Membenarkan tangkapan berbilang pembolehubah, sama ada mengikut nilai atau rujukan.
ekspresi lambda ialah alat berkuasa dalam C++ yang membolehkan kami mentakrifkan fungsi tanpa nama dalam fungsi. Kadangkala, kita perlu mengakses pembolehubah luaran dalam ungkapan lambda. Tutorial ini akan merangkumi beberapa cara berbeza untuk menangkap pembolehubah luaran.
Menggunakan sintaks [var]
, kita boleh menangkap pembolehubah var
mengikut nilai. Ini bermakna ungkapan lambda akan mencipta salinan pembolehubah. [var]
语法,我们可以按值捕获变量 var
。这意味着 lambda 表达式将创建该变量的副本。
auto var = 10; auto lambda = [var] { // 这里可以使用 var return var; };
使用 [&var]
语法,我们可以按引用捕获变量 var
。这意味着 lambda 表达式将获得对变量的引用。
auto var = 10; auto lambda = [&var] { // 这里可以使用 var 并修改它 var++; return var; };
我们可以按值和引用同时捕获多个变量。例如,以下 lambda 表达式按值捕获 val
,按引用捕获 ref
auto func = [](int val, int& ref) { // val 是按值捕获的,ref 是按引用捕获的 };
[&var]
, kita boleh menangkap pembolehubah var
melalui rujukan. Ini bermakna ungkapan lambda akan mendapat rujukan kepada pembolehubah. #include <iostream> #include <vector> using namespace std; int main() { // 按值捕获 int num = 10; auto lambda1 = [num] { return num++; }; cout << lambda1() << endl; // 输出 10 // 按引用捕获 vector<int> myVector{1, 2, 3}; auto lambda2 = [&myVector] { myVector.push_back(4); }; lambda2(); for (auto& elem : myVector) { cout << elem << " "; // 输出 1 2 3 4 } cout << endl; return 0; }
val
mengikut nilai dan ref
melalui rujukan: 🎜rrreee🎜Contoh praktikal🎜🎜Contoh berikut menunjukkan cara menggunakan tangkapan luaran mengikut nilai dan dengan rujukan Pembolehubah: 🎜rrreeeAtas ialah kandungan terperinci Bagaimanakah ungkapan lambda C++ menangkap pembolehubah luaran?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!