我只有一个像这样的矢量
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的初学者
答案 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) { /* ... */ }
)