std::reference_wrapper

引用&必须初始化且不能重新分配,所以列表元素(如vector中元素)不能是引用。代替引用,我们可以使用指针,但这将打开存储或传递空指针的可能性,为了解决这个问题,有std :: reference_wrapper。

引用,其一变,都变。

当您希望将对象从std::reference包装器中取出时,可以使用get()成员函数。

#include <functional> // std::reference_wrapper
#include <iostream>
#include <vector>
#include <string>

int main()
{
    std::string tom{ "Tom" };
    std::vector<std::reference_wrapper<std::string>> names{}; //std::vector<ste::string&> names{} 错误
    names.push_back(tom);
    names[0].get() += " Beam"; //vector中第一个元素内容变为Tom Beam
    std::cout << tom << '
'; //tom也变为Tom Beam

    return 0;
}
原文地址:https://www.cnblogs.com/xixixing/p/13742317.html