for (vector<RFMSStepFlowButton*>::iterator it = m_unionlist.begin();
it!= m_unionlist.end();it++)
{
int i = 0;//找到两个就退出。
vector<RFMSStepFlowButton*>::iterator it1 = m_buttonlist.begin();
for (;it1!= m_buttonlist.end()&&i<2; it1++)
{
if (...)
{
m_unionlist.push_back(*it1);
i++;
}
}
}m_buttonlist,m_unionlist是两个vector目的,遍历m_unionlist,从m_buttonlist中找符合条件的项,插入m_unionlist,新插入的项也要参加遍历。我上面的方法报错了,该如何实现?
vector<RFMSStepFlowButton*>::iterator it1 = m_buttonlist.begin();
for (vector<RFMSStepFlowButton*>::iterator it = m_unionlist.begin();
it!= m_unionlist.end();it++)
{
int i = 0;//找到两个就退出。
for (;it1!= m_buttonlist.end()&&i<2; it1++)
{
if (...)
{
m_unionlist.push_back(*it1);
i++;
}
}
}
这样就行了
这样buttonlist遍历完第一次不就完了?
unionlist里的每一项都需要遍历buttonlist的啊。这个然后插入,是在什么时候插入?
应该是m_unionlist.push_back(*it1);后,it没有刷新。但怎样能让他刷新呢?
int vii = 0;
for (vii = 0; vii < vi.size(); vii++)
直接取 vi[vii] 出来但是楼主这个如果这样用的话会陷入死循环,发现没.?
for (vector<RFMSStepFlowButton*>::iterator it = m_unionlist.begin();
it!= m_unionlist.end();it++)
{
int i = 0;//找到两个就退出。
vector<RFMSStepFlowButton*>::iterator it1 = m_buttonlist.begin();
for (;it1!= m_buttonlist.end()&&i<2; it1++)
{
if (...)
{
m_unionlist.push_back(*it1);
it = find(m_unionlist.begin(),m_unionlist.end(),*it1);
i++;
}
}
}
办法是结合ttwtt和yshuise的方法。
代码:
for (int n = 0; n < m_unionlist.size();n++)
{
vector<RFMSStepFlowButton*>::iterator it = m_unionlist.begin();
it = it+n; int i = 0;//找到的按钮个数,到两个就退出。
for (vector<RFMSStepFlowButton*>::iterator it1 = m_buttonlist.begin();
it1!= m_buttonlist.end()&&i<2;it1++)
{
if (...)
{
m_unionlist.push_back(*it1);
i++;
}
}
}