English 中文(简体)
推回动力: 吸收器_vector<......>: 推进器: 吸收器_vector?
原标题:pushing back an boost::ptr_vector<...>::iterator in another boost::ptr_vector?

我有以下法典(此处作调整后,可能会有打字或 st脚):

typedef boost::ptr_vector<SomeClass> tvec;
tvec v;

// ... fill v ...

tvec vsnap;

for(tvec::iterator it = v.begin(); it != v.end(); ++it)
{
   if((*v).anyCondition)
       vsnap.push_back( it ); // (*it) or &(*it) doesn t work
}

现在,我的问题是,我不得不以任何方式推倒一个炉子,而我却不把点子放在它的一边。

是否容易看一看,还是会激起 p子,为本案作出错误选择?

提前感谢。

问题回答

参考:导师请你参考。 然后,你可以使用和安插;获取这一参考资料,例如vsnap.push_back(&:*it)>。 你会发现哪些错误?

此外,我们注意到,你的使用是不正确的。 老板拥有物体,不管物体地址如何。 因此,根据你的法典,你拥有两台ctor子,拥有同样的物体。 然后,他们会试图删除它,而你会失事。 也许希望转让所有权:

vsnap.push_back(v.release(it));

当然,这把物体从旧的病媒中删除,然后添加到新的病媒中。 如果你想要把物体留在这两种病媒中,你可以使用 st子:ctor子或 st子: 另一种替代办法是保持第一种动力:吸收器,但使第一种动力成为一种障碍:没有任何东西和只是原始病媒物体的探测器。 然后,你必须谨慎从事终身工作。

页: 1 第一种病媒的物体:

for(tvec::iterator it = v.begin(); it != v.end(); ++it)
{
   if((*v).anyCondition)
      vsnap.push_back(new_clone(*it));
}




相关问题
STL iterator as return value

I have class A, that contains std::vector and I would like to give an access to the vector from outside class A. The first thing that came to my mind is to make a get function that returns iterator ...

Create a new Tuple with one element modified

(I am working interactively with a WordprocessingDocument object in IronPython using the OpenXML SDK, but this is really a general Python question that should be applicable across all implementations) ...

Is it possible to use a RA-iterator out of range?

Consider the following code: typedef std::vector<int> cont_t; // Any container with RA-iterators typedef cont_t::const_iterator citer_t; // Random access iterator cont_t v(100); const int ...

Are Multiple Iterators possible in c=C#?

Are multiple iterators (for a single class or object) possible in C# .NET? If they are, give me some simple examples. Sorry if the question is not understandable and please make me clear.