我在lua有一张桌子
test = {1,2,4,2,3,4,2,3,4,"A", "B", "A"}
我想删除表中的所有重复元素.
输出应该是
test = {1,2,4,3,"A","B"}
我的尝试:
> items = {1,2,4,2,3,4,2,3,4,"A", "B", "A"}
> flags = {}
> for i=1,table.getn(items) do
if not flags[items[i]] then
io.write(' ' .. items[i])
flags[items[i]] = true
end
>> end
1 2 4 3 A B>
现在工作正常.感谢您的回答和评论.
我以前见过这个问题,但不清楚或与我遇到的情况相同.
我有一个抽象的基类.它有一个受保护的构造函数和一个析构函数.它由几个完整的类型继承,它们也有公共构造函数和析构函数.我遇到的问题是,如果对象被基类型引用,则删除对象不会调用子析构函数.
class Tree
{
protected:
Tree(){ }
public:
~Tree(){ }
};
class OakTree : public Tree
{
public:
OakTree(){ }
~OakTree(){ }
};
vector<Tree*> Trees; // Store objects using the base type
Trees.push_back(new OakTree()); // Create derived object
delete Trees[0]; // OakTree desctructor does not get called
Run Code Online (Sandbox Code Playgroud)
如何调用OakTree析构函数?我已经尝试将所有析构函数标记为虚拟,但这不起作用.基类析构函数不能是抽象的(这将解决调用问题,但不能解决删除问题).