我怎样才能将具有点的矢量更改为具有其值的矢量

时间:2012-07-30 16:08:37

标签: c++ vector

我只有一个像这样的矢量

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的初学者

2 个答案:

答案 0 :(得分:3)

您的代码应该可以使用,但您输了一个拼写错误:

result.push_bach(**it);

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

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

result.push_back(**it);

答案 1 :(得分:1)

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

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