gpt4 book ai didi

c++ - 迭代范围,和 "one more"

转载 作者:搜寻专家 更新时间:2023-10-31 01:56:28 25 4
gpt4 key购买 nike

在我目前正在实现的算法中,有这一行(其中 u 是图中的一个顶点,而 Pred(u) 是所有具有边的顶点指向 u):

for all s ∈ Pred(u) ∪ {u}

我将 Pred(u) 部分翻译成 boost::graph 代码,如下所示:

boost::graph_traits<Graph>::in_edge_iterator in_begin, in_end;
boost::tie(in_begin, in_end) = boost::in_edges(u, G);
for(boost::graph_traits<Graph>::in_edge_iterator i = in_begin; i != in_end; ++i) {
// Do stuff
}

现在,我正在为 u 明确地在循环之外做 Do stuff 事情,但我想在 for 循环。是否有一些技巧可以创建迭代器,就好像 u 是从 boost::in_edges 返回的一样?

最佳答案

我认为您使用的解决方案没问题(只要Do stuff 代码分解得很好)。

不过,如果你经常遇到这样的问题,可以看看Boost.Range ,一个用于操作值范围而不是迭代器的库。在这里,您可以使用 join function获得两个范围的并集(boost::in_edgesu 的结果)。

关于c++ - 迭代范围,和 "one more",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7078860/

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