C++ 我怎样才能把一个有点的向量变成一个有值的向量呢

C++ 我怎样才能把一个有点的向量变成一个有值的向量呢,c++,vector,C++,Vector,我只有一个这样的向量 vector<User*> users; 矢量用户; 我知道这不是一个好的编程风格 现在我有一个函数 vector<User> getAllUser(void) { } vector getAllUser(无效) { } 我试过的是 vector<User> getAllUser(void) { vector<User> result; for (vector<User*>::iterato

我只有一个这样的向量

vector<User*> users;
矢量用户;
我知道这不是一个好的编程风格

现在我有一个函数

vector<User> getAllUser(void)
{
}
vector getAllUser(无效)
{
}
我试过的是

vector<User> getAllUser(void)
{
    vector<User> result;
    for (vector<User*>::iterator it = users.begin(); it != users.end(); it++)
    {
        result.push_back(**it);
    }
    return result;
}
vector getAllUser(无效)
{
矢量结果;
for(vector::iterator it=users.begin();it!=users.end();it++)
{
结果。将_向后推(**it);
}
返回结果;
}
但它不起作用


有人能帮我吗?非常感谢。我只是STL的初学者

您的代码应该可以工作,但您输入了一个错误:

result.push_bach(**it);
push_bach
不是
std::vector
的声明函数,因此我假设这就是错误所在。我建议您使用一个像样的编译器,它应该立即向您指出这个错误,而不必经过stackoverflow

要修复此问题,请使用正确的方法名称,
push_back

result.push_back(**it);

您的代码应该可以工作,但您输入了一个错误:

result.push_bach(**it);
push_bach
不是
std::vector
的声明函数,因此我假设这就是错误所在。我建议您使用一个像样的编译器,它应该立即向您指出这个错误,而不必经过stackoverflow

要修复此问题,请使用正确的方法名称,
push_back

result.push_back(**it);

如果必须使用指针,请在使用
User*
的任何位置使用漂亮的
std::shared\u ptr
,并且不要混合和匹配堆和堆栈分配的对象


如果您真的不需要到处使用指针,请确保
User
有一个副本构造函数defind(例如,
User::User(const User&rhs){/*…*/}

如果您必须使用指针,请在使用
User*
的任何地方使用一个漂亮的
std::shared\u ptr
,不要混合和匹配堆和堆栈分配的对象


如果您真的不需要到处使用指针,请确保
User
定义了一个复制构造函数(例如,
User::User(const User&rhs){/*…*/}

用户界面声明为什么?
结果。推回
而不是
结果。推回
。另外,请详细说明“它不起作用”的含义,请改为尝试
push_back
。另外,请接受有用的答案。它应该有效,到底发生了什么?我猜类
User
上没有复制构造函数。你能给我们看一下
用户
的代码吗?@Etan对不起,事实上,它是
push\u back
用户界面声明为什么?
结果。push\u back
而不是
结果。push\u bach
。另外,请详细说明“它不起作用”的含义,请改为尝试
push_back
。另外,请接受有用的答案。它应该有效,到底发生了什么?我猜类
User
上没有复制构造函数。你能给我们看一下
用户的代码吗?@Etan对不起,实际上是
推回的