哪位大神指导为什么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
代码呢, 看你描述应该是有很多个元素但是都指向了同一个对象。