You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

填充pair-of-pair类型std::vector未达预期输出的原因

问题分析:为什么你的pair-of-pair vector输出全为0?

首先,从你贴出的代码片段来看,逻辑上是完全正确的——你正确定义了嵌套pair的vector,用std::make_pair填充元素的方式没问题,循环输出的逻辑也没有错误。正常编译运行的话,应该会输出你预期的x: 100.0 y: 10 z: 20。

那实际运行输出全0,大概率是代码执行过程中出现了你没注意到的细节问题,下面列出几种最可能的原因:

  • 变量被意外修改:在push_back之后、循环输出之前,x/y/z或者vec的元素被其他代码意外赋值为0了。比如可能有你没贴出来的逻辑,比如vec[0].first = 0;或者x = 0;之类的操作。
  • 变量定义顺序出错:如果实际代码里,你把x/y/z的赋值写在了push_back之后,那会导致使用未初始化的变量,此时输出的是随机值(刚好为0也有可能)。
  • 拼写/参数错误:比如你实际写代码时,把std::make_pair(y,z)写成了std::make_pair(0,0),或者把(double)x写成了(double)0,只是在提问时写错了代码示例。
  • vector被意外清空:如果在push_back之后不小心调用了vec.clear(),那vec的size会变成0,循环根本不会执行;但如果是resize成了某个大小但没赋值,也可能出现输出0的情况,但这种情况和你描述的输出三次0的现象不完全匹配。

你可以重点检查实际运行的代码,确认变量是否在push_back前完成了正确赋值,以及有没有后续的意外修改操作。

内容的提问来源于stack exchange,提问作者henrykorir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 06:49:09