关于vector<vector<int>> 犯得一个小错误

执行如下代码:

  //创建vector v1和v2
    vector<int> v1;
    vector<int> v2;
 //创建存放vector的vector vv,并且将v1和v2加入到vv
    vector<vector<int>> vv;
    vv.push_back(v1);
    vv.push_back(v2);

//修改v1和v2,请问vv跟着变化?
    v1.push_back(1);
    v2.push_back(2);

代码的流程是:

  1. 创建vector v1和v2
  2. 创建存放vector的vector vv,并且将v1和v2加入到vv
  3. 请问,修改v1和v2,请问vv跟着变化?

答案是不会的。

那么如果先让vv[0]和v1的数据保持同步,应该怎么办?

    vector<int> v1;
    vector<int> v2;

    vector<vector<int> *> vv;
    vv.push_back(&v1);
    vv.push_back(&v2);

    v1.push_back(1);
    v2.push_back(2);
   
 //输出的结果相同
    cout << (*vv[0])[0] << endl;
    cout << v1[0] << endl;

这样修改v1和v2,之后通过vv也可以访问到修改之后的数据。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容