如何保存此向量

| 我想知道如何定义向量变量,以将该代码的输出保存在向量中?
/*what should be here?*/=agent.GetInfoState().GetPositionInfo().GetCloseTeammateToTeammate(2);
GetcloseTeammateToTeammate
定义为:
const std::vector<Unum> & GetCloseTeammateToTeammate(Unum i) 
{   
  Assert(i > 0); return GetCloseTeammateToPlayer(i); }
    
已邀请:
我一定在这里想念什么。这不是简单的:
const std::vector<Unum> &my_vector = agent.GetInfoState().GetPositionInfo().GetCloseTeammateToTeammate(2);
    
GetCloseTeammateToTeammate
返回对常数向量的引用。 只需使用:
const std::vector<Unum>& x = agent.GetInfoState().GetPositionInfo().GetCloseTeammateToTeammate(2);
获取参考。请注意,您只能调用vector的const成员函数。 要获取向量的副本,请执行以下操作:
std::vector<Unum> x = agent.GetInfoState().GetPositionInfo().GetCloseTeammateToTeammate(2);
仅在确实需要时才进行复制。     
根据您的实际需求,有两种不同的选择。如果您只打算在短期内对给定的向量做一些处理(并假设单线程执行和其他几点考虑),则可以保留引用:
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);
    

要回复问题请先登录注册