m2.foldLeft(m1.mapValues{List[CommonType](_)}) { case (acc, (k, v)) =>
acc.updated(k, acc.getOrElse(k, List.empty) :+ v)
}
Как отметил jwvh, тип списка должен быть указан явно, если Class1 не является верхней границей типа для Class2. CommonType - это тип, который является верхней границей как для Class1, так и для Class2.
Я думаю, что Интерфейсы и реализации C Дэйва Хэнсона можно охарактеризовать как быстрые и элегантные. Он включает в себя множество различных типов контейнеров, некоторую обработку строк, арифметику с высокой точностью, исключения, несколько различных менеджеров памяти. Хороший материал.
Есть книга, но вам не нужно покупать ее, чтобы использовать программу.
Разве Glib не подходит для ваших нужд? :-) developer.gnome.org/glib
Apache Portable Runtime
Включает модули для этих областей.
I previously recommended MemSL, but the website and company seem to have gone extinct. I would now suggest glib, it covers much of the same functionality and is widely supported and used throughout the Linux community.
I used MemSL when implementing an x86 kernel, and I found it to be general, reliable, and bug free.
From the description: C Overview of the Memory Structures Library (MemSL)
The Memory Structures Library, MemSL for short, is a library of useful routines allowing the efficient use of complex data structures in C. The MemSL contains routines for managing:
Вы также можете проверить iMatix SFL , чтобы процитировать их веб-страницу:
SFL (Стандартная библиотека функций) от iMatix - это портативная функция библиотека для программ на C / C ++. SFL - это результат многолетнего развития, и предоставляется как программное обеспечение с открытым исходным кодом в интересах Интернет-сообщество. SFL написан на ANSI C и был перенесен на MS-DOS, Windows, OS / 2, Linux. и другие системы UNIX (IBM AIX, SunOS, HP / UX, Solaris, NetBSD, FreeBSD, SCO OpenServer,> Digital UNIX) и Digital OpenVMS. Он поставляется с полными исходниками и документация в формате HTML.
SFL предоставляет около 450 функций, которые охватывают следующие области:
- сжатие, шифрование и кодирование;
- преобразование и форматирование типов данных;
- даты, время и календари;
- каталог и доступ к среде;
- Группы пользователей и процессов;
- Инвертированные индексы битовых карт;
- Таблицы символов;
- Файлы сообщений об ошибках;
- Файлы конфигурации;
- Обработка строк и поиск;
- Файл доступ;
- Доступ к Интернет-сокету;
- Интернет-программирование (MIME, CGI);
- Доступ SMTP (электронная почта);
- Серверное (пакетное) программирование;
- Отслеживание программ.
SFL - это бесплатное программное обеспечение, которое вы можете использовать и распространять в личных или коммерческих целях. для целей в соответствии с Лицензионным соглашением SFL .
Подробнее о самом API см. здесь .
Sglib «это универсальная библиотека для C, созданная на основе стандартной библиотеки шаблонов из C ++»