我想知道如何定义矢量变量以保存此代码在vector中的输出?
/*what should be here?*/=agent.GetInfoState().GetPositionInfo().GetCloseTeammateToTeammate(2);
GetcloseTeammateToTeammate
定义为:
const std::vector<Unum> & GetCloseTeammateToTeammate(Unum i)
{
Assert(i > 0); return GetCloseTeammateToPlayer(i); }
答案 0 :(得分:5)
GetCloseTeammateToTeammate
返回对常量向量的引用。
只需使用:
const std::vector<Unum>& x = agent.GetInfoState().GetPositionInfo().GetCloseTeammateToTeammate(2);
获取参考。请注意,您只能调用vector的const成员函数。
要获取矢量的副本,请执行以下操作:
std::vector<Unum> x = agent.GetInfoState().GetPositionInfo().GetCloseTeammateToTeammate(2);
只有你真的需要复制。
答案 1 :(得分:2)
我必须在这里遗漏一些东西。不仅仅是这个:
const std::vector<Unum> &my_vector = agent.GetInfoState().GetPositionInfo().GetCloseTeammateToTeammate(2);
答案 2 :(得分:1)
根据您的实际需要,有两种不同的选择。如果您打算在短期内对给定向量进行一些处理,(并假设单线程执行和其他一些注意事项),您可以保留引用:
std::vector<Unum> const & v = agent.GetInfoState().GetPositionInfo().GetCloseTeammateToTeammate(2);
for ( std::vector<Unum>::const_iterator it = v.begin(), end = v.end(); it != end; ++it )
{
// do something
}
如果你想要的是保存矢量的副本,以便稍后你可以检查更改,或者你想现在使用矢量,而不需要任何后续的更改(注意这不是线程)安全!),只需复制它:
std::vector<Unum> copy = agent.GetInfoState().GetPositionInfo().GetCloseTeammateToTeammate(2);