比方说,我使用c ++ stl列表,并声明了它并对其进行了一些操作。我将如何查看程序正在调用的stl列表模板中的特定功能。例如,如果我有以下代码:
std::list<std::string> someList;
someList = someOtherList;
我该如何准确打印出stl列表中程序调用的构造函数?
答案 0 :(得分:1)
您的问题有两个答案:
c ++标准仅定义了STL应该做什么,但没有定义如何做。根据定义,您应该不可能从外部分辨出发生了什么。
因此,它是实现定义的库实际执行的操作。它可以只创建您的列表,也可以编写Java Web服务器来生成c ++列表,执行并返回结果。您无法分辨出差异。
但是,不要害怕。还有两种方法可以获取所需的某些信息。首先,您可以购买c ++标准并查看STL的示例实现。 (幸运的是,实际上您可以从cppreference那里免费获得最多的东西。)或者,您可以使用调试器在执行代码时逐步查看代码,以查看被调用的函数。
请注意,第一个答案不仅是傻笑。使用调试方法可能会遇到严重的问题。一些STL实现不关心可读性。他们使用最快的C ++丑陋的代码,因此可能很难理解。而且,某些库仅提供编译的二进制文件和头文件,因此没有运气来查看代码。
不过,请尝试一下。也许您知道自己想要什么。如果没有,您仍然可以通过正确使用调试器来学习。 :D