Нужна библиотека общего назначения, чистый [закрытый] C

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.

23
задан Matt Fenwick 12 October 2012 в 16:43
поделиться

8 ответов

Я думаю, что Интерфейсы и реализации C Дэйва Хэнсона можно охарактеризовать как быстрые и элегантные. Он включает в себя множество различных типов контейнеров, некоторую обработку строк, арифметику с высокой точностью, исключения, несколько различных менеджеров памяти. Хороший материал.

Есть книга, но вам не нужно покупать ее, чтобы использовать программу.

14
ответ дан 29 November 2019 в 01:00
поделиться

Разве Glib не подходит для ваших нужд? :-) developer.gnome.org/glib

15
ответ дан 29 November 2019 в 01:00
поделиться

Apache Portable Runtime

http://apr.apache.org/

Включает модули для этих областей.

  • Определения платформы
  • Распределение внутренней памяти
  • Атомарные операции
  • Обработка динамических объектов
  • Функции для управления средой
  • Коды ошибок
  • Информация о файле
  • Функции обработки файлового ввода-вывода
  • Функции сопоставления имен файлов
  • Разные библиотечные подпрограммы
  • Командный анализ аргументов
  • Глобальные подпрограммы блокировки
  • Хеш-таблицы
  • Универсальные библиотечные подпрограммы
  • Подпрограммы MMAP (карты памяти)
  • Сетевые подпрограммы
  • Процедуры опроса
  • Функции пула памяти
  • Процедуры переносимости
  • Процедуры блокировки процессов
  • Случайные функции
  • Реализации макросов в кольце
  • Процедуры с общей памятью
  • Обработка сигналов
  • Строковые процедуры
  • Внутренние функции поддержки APR
  • Функции таблиц и массивов
  • Подпрограммы переменных условий
  • Подпрограммы мьютекса потоков
  • Потоки и функции процессов
  • Подпрограммы блокировки чтения / записи
  • Подпрограммы времени
  • Службы идентификации пользователей и групп
14
ответ дан 29 November 2019 в 01:00
поделиться

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:

  • Multi-Dimensional Dynamically Allocated Arrays
  • Single Linked Lists
  • Double Linked Lists
  • Circular Linked Lists
  • Cut, Copy and Paste with Linked Lists
  • Multiple Positional Pointers to Linked Lists
  • Stacks
  • Queues
  • Dequeues
  • Sets
  • Bags
  • Tables
  • Dictionaries
  • Hash Tables with Separate Chaining
  • Hash Tables with User-Defined Paging
  • Hash Tables with Dynamic Paging
  • Binary Search Trees
  • Threaded Binary Search Trees
  • AVL Balanced Binary Search Trees
  • AVL Balanced Threaded Binary Search Trees
  • Priority Heaps
  • Fully Dynamic Priority Search Queues
7
ответ дан 29 November 2019 в 01:00
поделиться
5
ответ дан 29 November 2019 в 01:00
поделиться

Вы также можете проверить 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 см. здесь .

5
ответ дан 29 November 2019 в 01:00
поделиться

Sglib «это универсальная библиотека для C, созданная на основе стандартной библиотеки шаблонов из C ++»

4
ответ дан 29 November 2019 в 01:00
поделиться

Позвольте мне добавить:

http://libslack.org

(... и добавить к этому: libcx)

2
ответ дан 29 November 2019 в 01:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: