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

如何用范围for循环输入C++二维vector?新手求助

范围for循环写入二维vector的问题解决

你的问题出在范围for循环的变量传递方式上:

错误原因

  1. 外层循环for(vector<int> v1d : vec)中,v1d是vec里每个一维vector的副本,不是原容器的引用。你对v1d的所有修改都只作用在这个临时副本上,原vec不会有任何变化。
  2. 内层循环for(int x : v1d)同理,x是v1d中元素的副本,cin >> x只是修改这个临时变量,根本碰不到原vector里的元素。

而用cout时能正常输出,是因为读取副本的内容和原容器一致,不需要修改,所以看起来没问题。

正确写法

要直接操作原容器的元素,必须在范围for循环中使用引用:

vector<vector<int>> vec(n, vector<int>(m));
// 外层用引用,直接操作vec中的一维vector
for(vector<int>& v1d : vec){
    // 内层用引用,直接操作一维vector中的元素
    for(int& x : v1d){
        cin >> x;
    }
}

这样修改后,cin输入的值会直接写入原vec的对应位置,就能正常工作了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 16:05:36