gpt4 book ai didi

c++ - 从指针获取迭代器

转载 作者:太空宇宙 更新时间:2023-11-04 14:50:30 25 4
gpt4 key购买 nike

以下问题 Segmentation fault executing method我在另一个问题中停止了。

给定:

Cluster * base;
Cluster * absorbed;

list<Cluster>::iterator li = clusters.begin();

// li is then pointed to some element.

absorbed = &(*li); // Get a pointer to the chosen element.

base->joinCluster(absorbed); // Perform an action with absorbed.

// li contines the cycle and now point to clusters.end()

// Now, absorbed should be deleted from list. li doesn't point to absorbed anymore.
li = & (* absorbed);
clusters.erase(li);

尝试执行与上述相反的操作,但 g++ 返回错误:error: no match for 'operator=' in 'li = absorbed'我该怎么做?

我试图避免循环遍历列表中的所有元素以再次找到absorbed 元素。

编辑:

抱歉,但我知道我错过了说 absorbed = &(* li); li 继续循环直到 clusters.end()。因此,在循环结束时,li 不再指向 absorbed。我想我有两个选择:或者我再次循环遍历 clusters 中的所有元素以找到 absorbed 元素;或者我利用 absorbed 指针从 clusters 中删除元素。但是,我怎样才能实现第二个选择呢?

最佳答案

只需跳过 li = &(*absorbed) 行,它应该可以正常工作。

关于c++ - 从指针获取迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10209065/

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