使用C++模板编译程序的过程

Din*_*han 0 c++ templates

假设以下代码是为了相同的目的而编写的.程序的其余代码是相同的.
代码1

#include <vector>
using namespace std;
vector<int> vector1;
vector<int> vector2;
vector<int> vector3;
vector<int> vector4;
Run Code Online (Sandbox Code Playgroud)

码2

 #include <vector>
using namespace std;
vector<int> vector1;
vector<short> vector2;
vector<char> vector3;
vector<bool> vector4;
Run Code Online (Sandbox Code Playgroud)

现在哪一个更好(就可执行文件大小而言)?(提示:考虑可执行文件)

我比较了g ++ -S给出的汇编结果.
令人惊讶的是,第二个程序的行数是1778,第一个是630.这意味着第一个程序更好.
为了解释这种行为,我寻找了"如何编译基于模板的程序"的良好资源,但我找不到一个.

如何使用模板的程序由编译器编译到程序集中?你有很好的资源吗?(这不是家庭作业,而是我工作场所给出的自学问题.你是否觉得不给答案至少指导我一个好的资源)

Gor*_*pik 7

你发现的行为根本不足为奇.编译器使用模板生成所需数量的类.在你的第一个例子中,它只需要生成一个(vector<int>),而在你的第二个例子中它需要生成四个.当然,这会产生更多代码.

至于哪个更好的问题:当然,更好地服务于其目的的问题.但只有你能够知道这一点.