【发布时间】:2013-12-17 20:57:25
【问题描述】:
我有一个声明为class MyClass : public list_base_hook<link_mode<normal_link>> 的类。我还有一个声明为 list<MyClass> global_list_MyClass 的列表。
我使用 for 循环将 10 个节点插入 global_list_MyClass。我的目标是尝试使用boost::intrusive::swap 交换Node1 和Node2,但似乎失败了(很多编译错误)。
我试图在互联网上搜索,但找不到任何好的例子。
示例代码:
class MyClass : public list_base_hook<link_mode<normal_link>>
{
public:
int nValue;
public:
MyClass(){}
virtual ~MyClass(){}
};
static boost::intrusive::list<MyClass> global_list_MyClass;
//Insert 10 nodes
for (int n=0; n<10; n++)
{
MyClass *p_oTMP1 = new MyClass();
p_oTMP1->nValue = n;
global_list_MyClass.push_back(*p_oTMP1);
}
//Search for Target node 1
int nTarget1 = 5;
boost::intrusive::list<MyClass>::iterator oTmpTarget1;
for (list<MyClass>::iterator iTmpToken=global_list_MyClass.begin(); iTmpToken!=global_list_MyClass.end(); iTmpToken++)
{
if (!(iTmpToken->nValue == nTarget1))
continue;
oTmpTarget1 = iTmpToken;
break;
}
//Search for Target node 2
int nTarget2 = 6;
boost::intrusive::list<MyClass>::iterator oTmpTarget2;
for (list<MyClass>::iterator iTmpToken=global_list_MyClass.begin(); iTmpToken!=global_list_MyClass.end(); iTmpToken++)
{
if (!(iTmpToken->nValue == nTarget2))
continue;
oTmpTarget2 = iTmpToken;
break;
}
//Swap Node1 with Node2
/*Here is what i not sure what to do with boost::intrusive::swap or global_list_MyClass.swap()
【问题讨论】:
-
显示你的编译错误。我们无法修复我们看不到的东西。
-
抱歉,我的水晶球现在坏了。您必须向我们提供更多信息 - 例如最小的代码示例(或者更好的是 SSCCE),以及编译错误。
-
不要再次感谢这个问题,Angew 删除了它们,因为它们只是噪音。
-
至于“谢谢”,是a site policy(另见here)。
-
好的,抱歉,这是我在 stackoverflow.com 上的第一篇文章
标签: c++ boost intrusive-containers boost-intrusive