c++ 引用包装器的用法
直接写测试代码测试引用包装器:
void testReference(void) {int a = 10, b = 20, c = 30;// std::reference_wrapper为引用包装器。可以通过std::ref函数构造std::reference_wrapper<int> refA = std::ref(a);std::reference_wrapper<int> refB = std::ref(b);std::reference_wrapper<int> refC = std::ref(c);std::vector<std::reference_wrapper<int>> numbers; // 或者直接初始化为{refA,refB,refC}numbers.push_back(refA);numbers.push_back(refB);numbers.push_back(refC);for (auto& ref : numbers) {ref.get()++; // 通过引用包装器修改值。成功!}std::cout << std::format("a、b、c的值分别为:{0}、{1}、{2}", a, b, c) << std::endl; // std::format为c++ 20的字符串格式化函数// 或者这样也能通过引用包装器修改值std::for_each(numbers.begin(), numbers.end(), [](auto& val)->void {val /= 2; // ok. 可以修改原始变量成功});std::cout << std::format("a、b、c的值又变为:{0}、{1}、{2}", a, b, c) << std::endl;
}打印:

ok.
