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对不起,实际上是推回的