对话框中的C ++合并列表元素

时间:2014-03-11 17:58:14

标签: c++ list pointers stl

我需要成对合并列表元素,合并前两个,然后合并后两个,依此类推,如果没有对,则保持最后一个元素不变。例如,如果我通过添加对将数字列表从0合并为10,我将从顶部列表转到下面的底部列表。

0 1 2 3 4 5 6 7 8 9 10

1   5   9   13  15  10

(第二个列表中有额外的空白以便于阅读,但它的大小应为6,它不应该有任何空元素。) 这是一个非常简单的例子;我的实际程序正在使用合并功能

void merge(Obj *a, Obj *b)

在指向对象的指针列表上。

std::list<Obj*> myList;

如何像这样成对迭代列表?

1 个答案:

答案 0 :(得分:0)

这样的东西
std::list<*Obj> newList;
std::list<*Obj>::iterator itFirst = myList.begin();
std::list<*Obj>::iterator itSecond = myList.begin();
itSecond++; // move to element 1

for ( ; 
      itFirst != myList.end();
      std::advance(itFirst, 2), std::advance(itSecond, 2) )
{
    newList.push_back(merge(*itFirst, *itSecond));
}

这应该合并您在示例中显示的每对连续元素,并将它们填入新列表中。