繁体   English   中英

C ++ STL低级编程

[英]C++ STL low level programming

是否有可能使用STL进行一些底层编程,至少是容器和算法? 我需要做一个简单的OS,必须知道尝试C ++和STL或与普通C一起使用是否可行。接受任何资源。谢谢。

编辑 - - - - -

那Boost呢?

我熟悉的C ++ STL的大多数实现都很大程度上依赖于OS(尤其是用于内存分配)。 我不会排除在操作系统内核中使用C ++ STL的麻烦,但是您必须做很多工作才能将STL的实现移植到您的环境中(例如,实现内存分配器,进行异常处理)工作时,编写iostreams兼容性填充程序以输出到屏幕(TTY /无论如何),并获得编译器以正确地实现您的实现。 仅使用C语言编写OS可能整体上就不那么麻烦了。:)

您应该完全使用C ++ STL。 即使您仅使用裸指针和数组,STL算法也会在很大程度上澄清您的想法和编程。 亚历山大·斯蒂芬诺夫(Alexander Stepanov)的STL的天才之处在于,算法是针对迭代器表达的,而迭代器是指针的泛化,因此您可以将其任何算法应用于原始指针和具有零运行时监听的数组。

另外,这是最好的部分。 如果您像Alexander Stepanov那样思考,并使用他的指针开始和指针过去的成语,那么所有加号(+1)和减号(-1)都将从数组中删除循环逻辑,您再也不必担心出现一对一的逻辑错误。

您应该编写一个OS,该OS将UTF8内存块的开头和结尾自然地表示为一对字节*。 然后,您的操作系统可以替换Unices,并将我们从以null终止的带符号char *字符串中解放出来。

您可以(并且应该)将C ++用于操作系统。 根据代码在操作系统中的位置,您可能不得不放弃标准库的部分(或全部),甚至在某些情况下甚至可能放弃某些功能(例外?); 这一切都取决于上下文。

关于STL容器,只要您指定自定义分配器,它们肯定会在某些级别上可用。 operator new的库实现将取决于操作系统的功能,因此可能无法在操作系统本身中使用。尽管即使这取决于操作系统的设计。)而且大多数算法都应该没有问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM