варьируется от ассоциативных массивов в D 2

Я только начал реализовывать свою первую программу среднего масштаба на D 2.0 после прочтения книги Андрея Язык программирования D . Одной из первых проблем, с которыми я столкнулся, было использование библиотеки std.algorithm со встроенным ассоциативным массивом. Например:

#!/usr/bin/env rdmd

import std.stdio;
import std.algorithm;

void main()
{
   alias int[string] StringHashmap;

   StringHashmap map1;
   map1["one"] = 1;
   map1["two"] = 2;
   writefln("map1: %s", map1);

   StringHashmap map2;
   map2["two"] = 2;
   map2["three"] = 3;
   writefln("map2: %s", map2);

   auto inter = setIntersection(map1, map2);
}

Это казалось мне достаточно простой вещью, ожидая, что итерация по интерфейсу создаст одну запись «два». Однако я получаю эту ошибку компилятора:

./ test.d (20): Ошибка: шаблон std.algorithm.setIntersection (псевдоним less = "a

./ test.d (20): ошибка: шаблон std.algorithm.setIntersection (псевдоним less = "a

Я вижу, что встроенный ассоциативный массив, похоже, не предоставляет какой-либо версии диапазона для использования с алгоритмами std.

Am Я что-то пропустил? Делать что-то не так? Если нет, то это явное упущение? Есть ли какая-то причина, по которой это правильно недоступно?

6
задан Jonathan M Davis 10 August 2010 в 16:56
поделиться