以下是一个示例实现,其中数据结构类型为MyMap,包含一个内部的关联数组:

import std.stdio;

class MyMap(K, V)
{
    private {
        V[K] data;
    }

    public {
        void insert(K key, V value)
        {
            data[key] = value;
        }

        V get(K key)
        {
            return data[key];
        }

        void byKeyValue(void delegate(K, V) dg)
        {
            foreach (key, value; data) {
                dg(key, value);
            }
        }

        void byKey(void delegate(K) dg)
        {
            foreach (key; data.keys) {
                dg(key);
            }
        }

        void byValue(void delegate(V) dg)
        {
            foreach (value; data.values) {
                dg(value);
            }
        }
    }
}

void main()
{
    auto map = new MyMap!string!int();

    map.insert("one", 1);
    map.insert("two", 2);
    map.insert("three", 3);

    // 遍历键值对
    map.byKeyValue((key, value) => writeln(key, ": ", value));

    // 遍历键
    map.byKey(key => writeln(key));

    // 遍历值
    map.byValue(value => writeln(value));
}

输出:

one: 1
two: 2
three: 3
one
two
three
1
2
3
``
dlang语言自己实现通过byKeyValue、byKey和byValue方法实现按键值、键和值来遍历一个数据结构类型类型于遍历关联数组那样这个数据结构类型是自己定义的类型

原文地址: https://www.cveoy.top/t/topic/fF6Q 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录