[{"data":1,"prerenderedAt":170},["ShallowReactive",2],{"content:\u002Fposts\u002F7d7ab77":3,"surround:\u002Fposts\u002F7d7ab77":163},{"id":4,"title":5,"body":6,"categories":136,"date":138,"description":139,"donation":140,"draft":141,"extension":142,"image":143,"meta":144,"navigation":140,"path":146,"permalink":146,"published":143,"readingTime":147,"recommend":143,"references":152,"seo":156,"sitemap":157,"stem":158,"tags":159,"type":160,"updated":161,"__hash__":162},"content\u002Fposts\u002F2026\u002Fcpp_vector_reference.md","C++ 学习笔记：vector 不能存引用吗",{"type":7,"value":8,"toc":129},"minimark",[9,17,27,32,35,41,45,60,72,94,98,101,107,126],[10,11,12,16],"p",{},[13,14,15],"code",{"code":15},"vector"," 不能直接存引用，下面这种写法会报错：",[18,19,25],"pre",{"className":20,"code":22,"language":23,"meta":24},[21],"language-cpp","#include \u003Cvector>\n\nstd::vector\u003Cint&> v; \u002F\u002F 错误：元素类型不能是引用\n","cpp","",[13,26,22],{"__ignoreMap":24},[28,29,31],"h2",{"id":30},"一引用是别名","一、引用是别名",[10,33,34],{},"引用就是已有对象的别名，初始化后不能重新绑定：",[18,36,39],{"className":37,"code":38,"language":23,"meta":24},[21],"int a = 10;\nint b = 20;\nint& r = a;\n\nr = b; \u002F\u002F a 变成 20，r 仍然是 a 的别名\n",[13,40,38],{"__ignoreMap":24},[28,42,44],{"id":43},"二vector-存的是对象","二、vector 存的是对象",[10,46,47,48,51,52,55,56,59],{},"这里的对象不只是类的实例，",[13,49,50],{"code":50},"a","、",[13,53,54],{"code":54},"b"," 这样的 ",[13,57,58],{"code":58},"int"," 变量本身也是对象。",[10,61,62,65,66,68,69,71],{},[13,63,64],{"code":64},"vector\u003Cint>"," 会在容器自己的空间里存放 ",[13,67,58],{"code":58}," 对象。引用本身不是对象，因此不能作为 ",[13,70,15],{"code":15}," 的元素类型。",[10,73,74,77,78,81,82,85,86,89,90,93],{},[13,75,76],{"code":76},"vector\u003CT>"," 的 ",[13,79,80],{"code":80},"data()"," 返回 ",[13,83,84],{"code":84},"T*","，也就是指向元素的指针。如果 ",[13,87,88],{"code":88},"T"," 是 ",[13,91,92],{"code":92},"int&","，就需要形成指向引用的指针，而 C++ 不允许这种类型。",[28,95,97],{"id":96},"三想修改原变量可以存指针","三、想修改原变量，可以存指针",[10,99,100],{},"存值和存指针的区别：",[18,102,105],{"className":103,"code":104,"language":23,"meta":24},[21],"#include \u003Cvector>\n\nint main() {\n  int a = 10;\n\n  std::vector\u003Cint> v1{a};\n  v1[0] = 20; \u002F\u002F 修改容器里的副本，a 仍然是 10\n\n  std::vector\u003Cint*> v2{&a};\n  *v2[0] = 30; \u002F\u002F 修改 a，a 变成 30\n}\n",[13,106,104],{"__ignoreMap":24},[10,108,109,112,113,115,116,119,120,122,123,125],{},[13,110,111],{"code":111},"&a"," 取出 ",[13,114,50],{"code":50}," 的地址，",[13,117,118],{"code":118},"*v2[0]"," 通过这个地址访问 ",[13,121,50],{"code":50},"。指针本身也是对象，所以可以存进 ",[13,124,15],{"code":15},"。",[10,127,128],{},"存指针时，要保证原变量仍然有效。变量销毁后，不能再通过保存的指针访问它。",{"title":24,"searchDepth":130,"depth":130,"links":131},4,[132,134,135],{"id":30,"depth":133,"text":31},2,{"id":43,"depth":133,"text":44},{"id":96,"depth":133,"text":97},[137],"笔记","2026-10-09 22:35:30","记录 vector 不能存引用的原因，以及存值、存指针的区别。",true,false,"md",null,{"slots":145},{},"\u002Fposts\u002F7d7ab77",{"text":148,"minutes":149,"time":150,"words":151},"2 min read",1.535,92100,307,[153],{"title":154,"link":155},"STL Vector容器 - lsgxeva - 博客园","https:\u002F\u002Fwww.cnblogs.com\u002Flsgxeva\u002Fp\u002F7790010.html",{"title":5,"description":139},{"loc":146},"posts\u002F2026\u002Fcpp_vector_reference",[23,13],"tech","2026-10-09 23:36:07","QakE9ASEnCphn5ne1GeGJmyFXInJFdER-8LbxT3vQRE",[164,143],{"title":165,"path":166,"stem":167,"date":168,"type":169,"children":-1},"醒来（八）· 梦","\u002Fposts\u002F2905a28","posts\u002F2026\u002Fsky_spy_08","2026-10-09 17:47:33","story",1791560393950]