qq_39993240
2018-09-28 13:44
采纳率: 33.3%
浏览 3.4k

关于C++ vector<char*>的问题

哪位大神指导为什么vector push之后所以的值都是最后一次push的值,求指导,谢谢

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

7条回答 默认 最新

  • threenewbee 2018-09-28 15:13
    已采纳

    看看你push的是什么,是不是你每次修改的对象,而不是创建新的对象,然后push进去的,导致实际上push的是同一个对象。比如下面的代码
    User u;
    for (inr i = 0; i < 10; i++)
    {
    u.name = "a";
    u.age = i;
    vec.push(u); //实际上你改来改去都是同一个对象
    }

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • oyljerry 2018-09-28 14:10

    你push进去的是不是指向同一个对象的指针。

    评论
    解决 无用
    打赏 举报
  • xingjianfengaa 2018-09-28 15:14

    vector其实就是数组,可动态改变大小,内存是连续的,push_back就是向数组最后加一个值,不知道你说的所以是指什么?实际上前面数据位置是不变的

    评论
    解决 无用
    打赏 举报
  • 白色一大坨 2018-09-29 01:46

    建议用string代替char*,这是比较正常的用法

    评论
    解决 无用
    打赏 举报
  • 白色一大坨 2018-09-29 04:52

    我按照你描述的写了一下程序,感觉并无问题,你可以跑一下看看:

     #include <iostream>
    #include <vector>
    using namespace std;
    
    int main()
    {
        vector<char*> vec;
    
        vec.push_back("123");
        vec.push_back("456");
        vec.push_back("789");
        vec.push_back("abc");
        vec.push_back("def");
        for (int i = 0; i < vec.size(); i++)
        {
            cout << vec[i] << endl;
        }
        system("pause");
        return 0;
    }
    

    运行结果:
    图片说明

    评论
    解决 无用
    打赏 举报
  • seventhking 2018-09-29 06:53

    你每次push的都是同一个指针吧,所以你当你修改了指针指向的值后,所有的vector的member都是一个值,因为它们都指向一个node

    评论
    解决 无用
    打赏 举报
  • 美行楼中楼 2018-09-30 05:30

    代码呢, 看你描述应该是有很多个元素但是都指向了同一个对象。

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题