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

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

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

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

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

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

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

 #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;
}

运行结果:
图片说明

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

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