gpt4 book ai didi

c++ - 从只能访问迭代器的 std::list 中删除项目

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

std::list 是一个双向链表。这是否意味着只需访问迭代器就可以从列表中删除一个项目?

也许我的问题不够清楚。

#pragma once

#include <list>


typedef std::list<int> IntList ;
typedef IntList::iterator IntIterator;

class IntHiddenList
{
private:
IntList list;
public:
IntIterator AddInt(int x)
{
list.push_front(x);
return list.begin();
}
};

int main()
{
IntHiddenList a;

IntIterator it = a.AddInt(5);


// How would I go about deleting 5 from the list using only "it"?
}

最佳答案

是的,理论上这是可能的。但是,标准库不允许(它需要容器和迭代器删除)。

不管你有多幸运:boost 提供了 boost::instrusive ( http://www.boost.org/doc/libs/1_54_0/doc/html/intrusive/list.html ) 能力来做你想做的事。

关于c++ - 从只能访问迭代器的 std::list 中删除项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18322808/

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