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;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 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 格式化字符串(日期显示、科学计数等)