gpt4 book ai didi

c++ - 为包装列表自定义迭代器

转载 作者:行者123 更新时间:2023-11-30 02:03:07 25 4
gpt4 key购买 nike

我有一个类 memberlist,它包含类 memberinfo 的 std::list。这些代表网络上的对等点。

我使用该类向列表中添加一些功能。

我想公开一些迭代器(开始和结束),以便外部代码可以循环遍历我的内部列表并读取它们的数据。但是,我希望有两种方法来执行此操作 - 一种包含本地主机的元素,另一种不包含。

执行此操作的好方法是什么?

我可以把本地节点放在第一位,然后像 begin(showlocal=false) 一样只给出第二个元素而不是第一个。或者有人建议存储一对带有 bool 值的值,说明它是否是本地的。

关于执行此操作的好方法有什么建议吗?我还不太擅长高级 STL 东西。

最佳答案

就我个人而言,我会以不同的方式处理这个问题,让您的 memberinfo有办法告诉您它是否是本地的。

这样一来,您就不会因为包含对象的专门化而专门化您的集合类。事实上,您可以只使用标准 std::list<memberinfo> .

例如

class memberinfo
{
bool IsLocal( ) const;
}

然后您将在遍历包含的对象时选择是否对本地成员感兴趣。

例如

std::list<memberinfo>::iterator it;
std::list<memberinfo> list;

for ( it = list.begin() ; it != list.end() ; it++ )
{
if ( it->IsLocal() )
{
// blah blah blah
}
else
{
// dum dee dum dee
}
}

关于c++ - 为包装列表自定义迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12426767/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com