如何保存此向量

问题描述

| 我想知道如何定义向量变量,以将该代码输出保存在向量中?
/*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);