我怎么能把一个有点的向量变成一个有值的向量呢

How could I change a vector which has points into a vector which has their value

本文关键字:向量 一个 怎么能      更新时间:2023-10-16

我只是有一个类似的向量

vector<User*> users;

我知道这不是一个好的编程风格。。。

现在我有一个功能

vector<User> getAllUser(void)
{
}

我试过的是

vector<User> getAllUser(void)
{
    vector<User> result;
    for (vector<User*>::iterator it = users.begin(); it != users.end(); it++)
    {
        result.push_back(**it);
    }
    return result;
}

但它没有起作用。

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

您的代码应该可以工作,但您犯了一个拼写错误:

result.push_bach(**it);

push_bach不是std::vector的声明函数,所以我假设这就是错误所在。我建议你找一个不错的编译器,它应该立即向你指出这个错误,而不必经过stackoverflow。

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

result.push_back(**it);

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

如果您不需要在任何地方都使用指针,请确保User有一个复制构造函数定义(例如,User::User(const User& rhs) { /* ... */ }