如何查看从c+调用的函数+;标准图书馆? 让我说,使用C++ STL列表,我声明它并用它做一些操作。如何查看程序调用的stl列表模板中的特定函数。例如,如果我有以下代码: std::list<std::string> someList; someList = someOtherList; std::list someList; someList=someOtherList;

如何查看从c+调用的函数+;标准图书馆? 让我说,使用C++ STL列表,我声明它并用它做一些操作。如何查看程序调用的stl列表模板中的特定函数。例如,如果我有以下代码: std::list<std::string> someList; someList = someOtherList; std::list someList; someList=someOtherList;,c++,debugging,terminal,c++-standard-library,C++,Debugging,Terminal,C++ Standard Library,如何准确打印程序调用的stl列表中的哪个构造函数?您的问题有两个答案: 你不能 你仍然可以做一点 《C++标准》只定义了STL应该做什么,而不是如何做。从定义上讲,你不可能从外部判断发生了什么 因此,实现定义了库的实际功能。它可以创建你的列表,或者它可以编写一个java的Web服务器来生成C++列表,执行它并把结果还给你。你看不出有什么区别 然而,不要害怕。仍然有两种可能获得您想要的一些信息。首先,您可以购买C++标准并查看STL的示例实现。(幸运的是,您实际上可以在cppreference

如何准确打印程序调用的stl列表中的哪个构造函数?

您的问题有两个答案:

  • 你不能
  • 你仍然可以做一点
《C++标准》只定义了STL应该做什么,而不是如何做。从定义上讲,你不可能从外部判断发生了什么

因此,实现定义了库的实际功能。它可以创建你的列表,或者它可以编写一个java的Web服务器来生成C++列表,执行它并把结果还给你。你看不出有什么区别

然而,不要害怕。仍然有两种可能获得您想要的一些信息。首先,您可以购买C++标准并查看STL的示例实现。(幸运的是,您实际上可以在cppreference免费获得大部分信息。)或者,您可以在执行时使用调试器逐步检查代码,以查看调用了哪些函数

不过要知道,第一个答案不仅仅是咯咯笑。使用调试方法可能会遇到严重的问题。一些STL实现并不关心可读性。他们使用任何最丑陋的C++,这是最快的,因此可能很难理解。此外,有些库只提供已编译的二进制文件和头文件,因此无法查看代码


尽管如此,还是要尝试一下。也许你会知道你想要什么。如果没有,您仍然可以通过正确使用调试器来学习:D

您不能打印它,但可以通过使用调试器单步执行来检查它。编辑:也许一个好的分析器可以给你一些堆栈跟踪的例子。另外,代码应该有一个构造函数调用,一个单独的复制赋值调用。或者grep符号,如果没有内联的话……你也可以创建你自己的头,覆盖stl头,看看编译器会告诉你什么。也就是说,这听起来像是一个XY问题。通过知道调用哪个构造函数,您试图解决什么问题?