如何保存此向量

时间:2011-04-14 15:18:02

标签: c++ vector

我想知道如何定义矢量变量以保存此代码在vector中的输出?

/*what should be here?*/=agent.GetInfoState().GetPositionInfo().GetCloseTeammateToTeammate(2);

GetcloseTeammateToTeammate定义为:

const std::vector<Unum> & GetCloseTeammateToTeammate(Unum i) 
{   
  Assert(i > 0); return GetCloseTeammateToPlayer(i); }

3 个答案:

答案 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);