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 << '\n'; //tom也变为Tom Beam

    return 0;
}
复制代码

 

posted @   夕西行  阅读(779)  评论(1编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· SpringCloud带你走进微服务的世界
历史上的今天:
2018-09-27 JDBC动态查询MySQL中的表(按条件筛选)
2018-09-27 JDBC批处理(Batch)MySQL中的表
2018-09-27 JDBC 增、改、删 MySQL中的表
2017-09-27 正则表达式
2017-09-27 格式化字符串(日期显示、科学计数等)
点击右上角即可分享
微信分享提示