Мне было интересно, есть ли в библиотеках C++ NSData, NSDictionary и NSArray, а если нет, есть ли известные популярные фреймворки, которые предоставляют эти классы?NSData, NSDictionary, NSArray Equivalents C++
С уважением
Мне было интересно, есть ли в библиотеках C++ NSData, NSDictionary и NSArray, а если нет, есть ли известные популярные фреймворки, которые предоставляют эти классы?NSData, NSDictionary, NSArray Equivalents C++
С уважением
STL есть карты, которые можно использовать вместо NSDictionary и векторов, которые могут быть использованы вместо NSArray, но, конечно, " преобразование "не является безболезненным, поскольку конкретные функции могут отсутствовать и нуждаться в некотором более кодировании. Например. для «эмулирования» селектора dictionaryWithContentsOfURL:
для NSDictionary вам потребуется дополнительное кодирование на C++, чтобы проанализировать URL-адрес, и - если это удаленный ресурс - для его подключения и получения, а затем для несериализации данных; другие библиотеки могут, конечно, помочь (boost?), но дело в том, что если вам нужно перенести некоторые специальные функции NSDictionary (и других), вам нужно написать больше кода.
С другой стороны, если вы используете только базовый словарь и функцию массива, то «преобразование» может стать довольно тривиальным.
Аналогичный аргумент для NSData, который может быть «эмулирован» на std::stringbuf
.
Вы также можете использовать библиотеки GNUstep; GNUstep - это открытая инфраструктура Cocoa GNU, которая обеспечивает почти все, что у вас есть на Cocoa (классы AppKit и Foundation); GNUstep существует для других платформ, чем Apple Mac OS X, поэтому вы можете переносить приложения Cocoa на эти платформы. Используя Objective-C++, вы можете использовать как структуру STL, так и Cocoa/GNUstep, а также использовать лучший из двух миров (с ограничениями на программирование OO и «взаимодействия» между классами/объектами различного «происхождения»), теоретически (я никогда не попробовал такую смесь, но paying attention возможно иметь некоторые преимущества, может быть)
Не совсем, так как возможности этих классов определяются в значительной степени языком.
С другой стороны, существует std :: vector (массив и данные) и std :: map (dictionary). Это совсем не эквивалентно, но они служат схожим целям.
да, но в Векторный объект будет скопирован. как сохранить только ссылку? – SAKrisT
Я нашел shared_ptr и weak_ptr очень полезные вещи :) – SAKrisT